四角形オブジェクトの外周に沿って、移動をループさせてみましょう。
RayCastを出し、床のオブジェクトとの接触判定をしながら、Cubeがずっと動いていきます。
関連記事:
オブジェクトの外周に沿って動く
触れている間はイベントを発生させる
オブジェクトに触れていれば動く
四角形の外側に沿って動く
Cubeを作成し、名前をFloorに変更。サイズを大きくします。
もう一つCubeを作成し、Floorの上に置くように、座標を変えます。
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 27 28 29 30 31 |
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); } else { transform.Translate(0f, 0f, -0.1f); transform.Rotate(0,90,0); } } } |
ゲームプレイしてみましょう。
下に向かて1の長さでRayCastを出し、接触を判定。
床に接触しなければ、-0.1だけ後退し、90°回転。
また前に向かって進みます。