Unity5.5で2Dゲームを作って遊ぶ その2 操作スクリプト編

前回 

namekatei.hateblo.jp

前回はスプライトにRigitbodyやColiderを付けることでコードを書かなくても物理演算と接触判定が実装できることを知った。

今回はコードを書いて、それを反映する。 

 

 スクリプトの作成

Projectタブで右クリック→Create→C#Scriptを選択

フォルダはわかりやすいようにScriptsというフォルダを作った。

スクリプト名は操作可能という意味でOperatableにしたが英語的に正しいのかは知らない。

Unity Player Oparation

 

スクリプトは、最初に呼ばれるStartメソッドと、毎フレーム呼ばれるUpdateメソッドからなる。

GetComponent<コンポーネントの種類>()でコンポーネントを取得できる。

なのでStartメソッド内でRigidbody2DとTransformコンポーネントを取得しておいた。

入力

入力はInputクラスから取得できる。デフォルトでキーボード、マウス、ゲームパッドの入力がまとめて得られる。

どういうことかというと、GetAxisで上下左右キーの入力が受け取れるのだが、ゲームパッドで左にスティックを倒しても、キーボードの左キーを押してもGetAxis("Horizontal")は1を返す。(つまりゲームパッドでもキーボードでも遊べる)

ちなみにGetAxisはアナログ入力にも対応していて、ゲームパッドなどのスティックの倒し具合によって-1~1までのfloat値が返る。

コードではとりあえず0.5を超えたら入力したとみなして判定している。

ボタン入力

GetButtonDownで対応するキー・ボタンが押されたかどうか取得できる。

対応するボタンとその名前は、EditメニューのProject Settings→Inputから見ることができる。ボタンを追加したりもできる。

デフォルトだとFire1、2、3とJumpボタンが登録されている。

f:id:myon886:20170327142937p:plain

スクリプト反映

書いたコードをHierarchyタブのPlayerのところにドラッグアンドドロップするか、PlayerのインスペクターでAdd ComponentボタンからScriptを選択することでスクリプトコンポーネントをアタッチできる。

 

f:id:myon886:20170327143430p:plain

これでスクリプトを反映させれば操作が可能になったはずだ。

Inputに関してはまた別の機会に詳しく調べてまとめようと思う。