キーボード操作でキャラクターを左右に移動させるところまで作ったので、今回は新たに重力を加えて、ジャンプさせる処理を作りたいと思います。
まずは、地面を配置しましょう。
Sprite Pack > Tap and Fly > Sprites > Backgroundのフォルダにあるscene_01_floor.pngをドラッグ&ドロップしましょう。
白い枠の下の方にはまるように地面のサイズ調整や位置調整をしましょう。
次に配置した地面に対し、Add ComponentでPhysics 2D > Box Collider 2Dを選択し、緑枠のようにInspectorタブ内にBox Collider 2Dを追加しましょう。
これをセットすると、地面との衝突判定が作られ、地面に触れた時にひよこが貫通しないようになります。
ひよこにも同じように衝突判定をセットする必要があるので、同じようにBox Collider 2Dを追加しましょう。
更にRigidbody 2DのGravity Scaleを1にセットし、重力を加えます。
これで、ひよこに重力が加わり、地面より下に落ちなくなります。
次に、ひよこのジャンプ処理を作っていきます。
Sprite Pack > Tap and Fly > Sprites > Playerフォルダに作成したPlayerScriptをダブルクリックします。
そして、コードを以下のように書き換えます。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerScript : MonoBehaviour { Rigidbody2D rb; // Use this for initialization void Start () { rb = GetComponent<Rigidbody2D>(); } // Update is called once per frame void Update () { //Aキーを押さえている間 if (Input.GetKey(KeyCode.A)) { rb.position += new Vector2(-2.0f, 0.0f) * Time.deltaTime; } //Sキーを押した時 if (Input.GetKeyDown(KeyCode.S)) { rb.position = new Vector2(0.0f, 0.0f); //位置を中央に戻す rb.velocity = Vector2.zero; //加速度を0にする } //Dキーを押さえている間 if (Input.GetKey(KeyCode.D)) { rb.position += new Vector2(2.0f, 0.0f) * Time.deltaTime; } //Wキーを押した時 if (Input.GetKeyDown(KeyCode.W)) { rb.AddForce(Vector2.up * 300); } } }
一番下にWキーを押した時の処理を書き加えました。
前回、使用したAddForceというものを使い、Wキーを押した時に上方向(Vector2.up)に300進むという処理を追加しました。
これで、Wキーを押した時に、重力に逆らい、上方向にジャンプするようになりました。
ちなみに、入力制限は設けていない為、連打すると連続でジャンプしていきます。