ジャンプして空中にいる間でも、キャラクターを動かせるように、スクリプトを作成しましょう。
今回の例ではスペースキーでジャンプ。着地までの少しの間、十字キーで動かすことができます。
飛びながら操作するようなゲームに適した仕組みです。
空中にいる間は動かせる仕組み
Planeを用意して床をつくります。
Sphereを作成し、リジッドボディを追加して、これをプレーヤーにします。
オブジェクトの形状によっては、転倒することもあるため、回転を固定しておきましょう。
Planeの上にSphereを置いた状態にします。
Player.csを作成し、Sphereにアタッチします。
Player.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { Rigidbody rb; private float speed; private float upForce; private bool isJump; void Start() { speed = 5.0f; upForce = 8.0f; rb = GetComponent<Rigidbody>(); } void Update() { float moveX = Input.GetAxisRaw("Horizontal"); float moveZ = Input.GetAxisRaw("Vertical"); rb.velocity = new Vector3(moveX * speed, rb.velocity.y, moveZ * speed); if(!isJump) { if(Input.GetKeyDown("space")) { rb.velocity = new Vector3(0 ,upForce, 0); } } } void OnCollisionStay(Collision other) { if(other.gameObject.name == "Plane") { isJump = false; } } void OnCollisionExit(Collision other) { if(other.gameObject.name == "Plane") { isJump = true; } } } |
ゲームプレイしてみましょう。
スペースキーでジャンプした後、十字キーを押すと、飛んでいる間でも移動できます。