現在unity2Dでゲームを作成しています。
NPCが指定した範囲を上下左右にランダム移動するスクリプトを書きましたが、移動が不安定です。
再生ボタンを押すと、上下移動だけしたり、また瞬間移動をしたりしてしまいます。
原因がわかりません。
アドバイスをいただけると嬉しいです。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Oiran : MonoBehaviour { private float chargeTime = 5.0f; private float timeCount; Vector3 direction; //進行方向 Vector2 minMoveArea = new Vector2(-2.9f, -1f); Vector2 maxMoveArea = new Vector2(2.9f, 1f); private void Start() { //最初の進行方向をランダム direction = RandomDirection(); } private void Update() { if ((transform.position.x < minMoveArea.x) || (transform.position.y < minMoveArea.y) || (transform.position.x < maxMoveArea.x) || (transform.position.y > maxMoveArea.y) ) { Turn(); } timeCount += Time.deltaTime; transform.position += direction * Time.deltaTime; //指定した時間を経過すると if (timeCount > chargeTime) { //進路をランダムに変更する direction = RandomDirection(); //TimeCountを0に戻す timeCount = 0; } } void Turn() { //タイムカウントを0に戻す。 timeCount = 0; if (direction == Vector3.up) { transform.position = new Vector3(transform.position.x, maxMoveArea.y,transform.position.z); direction = Vector3.down; } else if (direction == Vector3.down) { transform.position = new Vector3(transform.position.x, minMoveArea.y, transform.position.z); direction = Vector3.up; } else if (direction == Vector3.left) { transform.position = new Vector3(minMoveArea.x, transform.position.y, transform.position.z); direction = Vector3.right; } else if (direction == Vector3.right) { transform.position = new Vector3(maxMoveArea.x, transform.position.y, transform.position.z); direction = Vector3.left; } } Vector3 RandomDirection() { int r = Random.Range(0, 4); //0-3までのランダムな数字(変数) switch (r) { default: //それ以外がdefault case 0: return Vector3.up; case 1: return Vector3.down; case 2: return Vector3.left; case 3: return Vector3.right; } } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/21 22:09