Unity5.5で2Dゲームを作って遊ぶ その2 操作スクリプト編
前回
前回はスプライトにRigitbodyやColiderを付けることでコードを書かなくても物理演算と接触判定が実装できることを知った。
今回はコードを書いて、それを反映する。
スクリプトの作成
Projectタブで右クリック→Create→C#Scriptを選択
フォルダはわかりやすいようにScriptsというフォルダを作った。
スクリプト名は操作可能という意味でOperatableにしたが英語的に正しいのかは知らない。
スクリプトは、最初に呼ばれる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ボタンが登録されている。
スクリプト反映
書いたコードをHierarchyタブのPlayerのところにドラッグアンドドロップするか、PlayerのインスペクターでAdd ComponentボタンからScriptを選択することでスクリプトコンポーネントをアタッチできる。
これでスクリプトを反映させれば操作が可能になったはずだ。
Inputに関してはまた別の機会に詳しく調べてまとめようと思う。