真下に出しているRayが当たらなくなると、プレーヤーが落下するしくみをつくりましょう。
キー操作で動くプレーヤー。
Rayの照射が外れてしまうと、UseGravityのチェックが入り、落下します。
Rayが当たらなければ重力をオンにする
PlaneとCubeを作成し、Planeを少し下に下げておきます。
Cubeを作成し、Y方向を上のほうに配置。
リジッドボディを追加して、重量を使用のチェックを外します。
ゲームビューではこのように見えています。
CubeMove.csを作成し、Cubeに追加します。
CubeMove.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { float rayDistance = 5.0f; float speed = 10f; Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(0f, 0f, speed * Time.deltaTime); } if (Input.GetKey(KeyCode.DownArrow)) { transform.Translate(0f, 0f, -speed * Time.deltaTime); } if (Input.GetKey(KeyCode.LeftArrow)) { transform.Translate(-speed * Time.deltaTime, 0f, 0f); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Translate(speed * Time.deltaTime, 0f, 0f); } Debug.DrawRay(transform.position, Vector3.down*rayDistance, Color.red); if(!Physics.Raycast(transform.position, Vector3.down, rayDistance)) { rb.useGravity = true; } } } |
ゲームプレイして、動きを確認しましょう。
十字キーで操作。
PlaneからRayの当たりが外れると、重力がはたらいて落下します。