他のオブジェクトに接している間だけ、前進していく仕組みをつくってみましょう。
今回はRayCastで接地判定をつくり、床に触れているときは前に進んで、床が無くなれば停止するようにします。
関連記事:
触れている間はイベントを発生させる
着地していればジャンプ可能
Raycastによる接地判定
左右にRaycastの接触判定をつくる
床の外側に沿って移動をくり返す
傾斜を上っていくPrefab
接触していれば動く
Cubeを作成し、名前をFloorに変更。
Z方向へ長さを変えて、床となるオブジェクトをつくります。
もう一つCubeを作成します。
床の上に配置し、少し後ろに下げます。
CubeMove.csを作成し、Cubeに追加します。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private float distance; void Start() { distance = 1.0f; } void Update() { Vector3 rayPosition = transform.position + new Vector3(0.0f, 0.0f, 0.0f); Ray ray = new Ray(rayPosition, Vector3.down); bool isGround = Physics.Raycast(ray, distance); Debug.DrawRay(rayPosition, Vector3.down * distance, Color.red); if(isGround) { transform.Translate(0f, 0f, 0.1f); } } } |
ゲームプレイしてみましょう。
下に向かて1の長さでRayCastを出し、これによる接触判定で、前に進む条件をつけています。
関連記事:
触れている間はイベントを発生させる
着地していればジャンプ可能
Raycastによる接地判定
左右にRaycastの接触判定をつくる
床の外側に沿って移動をくり返す
傾斜を上っていくPrefab