はじめに
前回は、キャラクターを追加してRigidbody 2Dを設定する方法について説明しました。
今回は、キャラクターをキーボードで操作する方法について説明します。
過去記事は以下の通りです。
- [Unity 2D] Unityのインストールと2Dプロジェクトの作成
- [Unity 2D] Unityエディタの理解
- [Unity 2D] スプライトを登録する
- [Unity 2D] カメラの設定
- [Unity 2D]キャラクターの追加とRigidbody 2Dの追加
キャラクター制御用スクリプトの作成
スクリプトを作成してキャラクターを移動させます。
はじめに、Projectビューで、Assetsフォルダの下にスクリプト保存用のScriptsフォルダを作成します。
続いて、作成したScriptsフォルダを右クリックして、「C# Scripts」を選択して、「Heli」という名前のスクリプトファイルを作成します。このとき付ける名前は任意のもので構いません。ヘリコプターを移動させたいのでHeliという名前にしています。
作成したスクリプトをダブルクリックして開くと、以下の様なコードが作成されていることがわかります。このとき関連付いているエディタが立ち上がり、コードが表示されます。おすすめのエディタはVisual Studioです。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Heli : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } }
StartメソッドとUpdateメソッド
Startメソッドは、初期化処理を行うためのメソッドで自動的に呼ばれます。このメソッドは、スクリプトのインスタンスが有効になり、最初のフレームのアップデート前に呼ばれます。
Updateメソッドは、毎フレーム呼ばれるメソッドです。敵キャラクターを動かしたりキーボード入力を取得したりする場合は、このメソッド内で行います。
キャラクターを移動させるスクリプトの作成
それではスクリプトを作成しましょう。スクリプトとキャラクターの関連付けは後から行います。
はじめに、Heli.csのUpdateメソッドを以下のように編集します。
public float speed = 100.0F; // 移動早さ // Use this for initialization void Start () { } // Update is called once per frame void Update () { Debug.Log("Inputed"); // 矢印キーの入力情報を取得 var h = Input.GetAxis("Horizontal"); var v = Input.GetAxis("Vertical"); // 移動する向きを作成する Vector2 direction = new Vector2(h, v).normalized; // 移動する向きとスピードを代入 GetComponent<Rigidbody2D>().velocity = direction * speed; }
Updateメソッド内のInput.GetAxisメソッドは、指定された文字列に対する仮想軸の値を返すメソッドです。
キーボードの矢印キーの値を取得したい場合は、GetAxisの引数に「Horizontal」や「Vertical」といった文字列を指定します。
Horizontalは水平方向を表し、右側が+です。Verticalは垂直方向を表し、上方向が+です。
GetAxisで取得した値を使用して移動させます。
移動方向はVector2構造体を使用します。Vector2構造体は、位置や方向を決める為に使用され、一般的なベクトル演算を行うメソッドが備わっています。
Vector2は以下の書式で使用します。
Vector3(float x, float y)
最後の行は、位置を設定させるためのプロパティです。Vector2とspeedを使用して移動をさせます。
以上でスクリプトの作成は完了です。
スクリプトのアタッチ
ひとまずスクリプトの作成が完了したのですが、この時点ではどのキャラクターとも結びついていません。
作成したスクリプトをキャラクターに結びつけることをアタッチするといいます。
アタッチするには、ProjectビューからHierarchyビューにある任意のキャラクターに、スクリプトをドラッグ&ドロップします。
キャラクターを選択した状態でInspectorビューを確認すると、Playerという項目が追加され、Speedという値の設定が可能になっていることがわかります。これは、先ほどスクリプトに記述したpublic変数です。
Speedが100だと速すぎるので、1〜10くらいの範囲で設定してみてください。
このようにpublic変数はUnityエディタ上で編集できるようになります。
動作確認
あとは再生ボタンを押して動作を確認しましょう。
以下のようにヘリコプターを操縦することができます。
コメント