ランダムに回転して移動します。それを繰り返す。
敵についているコード
C#
1public class Enemy_Move : RandomMove 2{ 3 [SerializeField] Enemy_Status enemy; // ステータス 4 [SerializeField] Enemy_Collision enemyColl; // 探索範囲 5 6 Transform my_Vec; // 自身の座標 7 Quaternion direction; // 向き 8 float timeCount; // 時間を計測 9 float maxTime = 1f; // 時間 10 11 12 private void Start() 13 { 14 my_Vec = transform; 15 my_Vec.rotation = direction; 16 } 17 void Update() 18 { 19 if (enemyColl.follow) {// 追従する 20 21 //my_Vec.position += (enemyColl.playerPos - transform.position) * enemy.enemy_Speed; 22 //transform.position += my_Vec.position * Time.deltaTime; 23 } 24 else { 25 26 base.RandomMoveOn(); 27 28 29 timeCount += Time.deltaTime; 30 if (timeCount >= maxTime) {// 指定時間後、向きを変える 31 32 StartCoroutine(base.RandomRot()); 33 timeCount = 0; 34 } 35 36 } 37 } 38} 39
RandomMove
C#
1public class RandomMove : MonoBehaviour 2{ 3 /// <summary> 4 /// ランダムな角度 5 /// </summary> 6 /// <returns></returns> 7 public virtual IEnumerator RandomRot() { 8 9 Quaternion trans = transform.rotation; ; 10 float random_Z = Random.Range(180f, -180f); 11 trans.z = Mathf.LerpAngle(transform.localRotation.z, random_Z, 1f); 12 13 trans = Quaternion.Euler(0, 0, random_Z); 14 this.gameObject.transform.rotation = trans; 15 16 yield break; 17 } 18 /// <summary> 19 /// ランダムに移動 20 /// </summary> 21 public virtual void RandomMoveOn() { 22 23 float speed;// 移動スピード 24 float speed_Max = 4f; 25 Transform myTransform = this.transform; 26 27 speed = Random.Range(0, speed_Max); 28 myTransform.Translate(0, speed * Time.deltaTime, 0); 29 } 30} 31 32スクリプタブルオブジェクトを使ってみたかったので使っています。 33 34```C# 35[CreateAssetMenu(fileName = "Enemy", menuName = "ScriptableObjects/CreateAsset")] 36public class Enemy_Status : ScriptableObject 37{ 38 public float enemy_Speed = 0.1f;// スピード 39}
下手ながらも
回転をやりました。回転をゆっくりしたいです。
ーーーーーーーーーー追記ーーーーーーーーーーーーーーー
実装したいのは敵のAIです。
・範囲内に敵が入っているのならば追従(追従は後でやります。)
・入っていないならばランダムに角度を変え移動
敵のAIには二つコライダがついていて、一つはプレイヤーの弾を受け止める方(小さいコライダ)
敵の子である二つ目は敵の探索範囲(大きいコライダ)
現在下手ながらもコードを書いたのですが、挙動を直したいです。
・回転の角度変更をゆっくりにする(今の状態だとかくかくしている)。
やり方のヒントでも良いので教えてもらえないでしょうか?こんな感じみたいなコードを貰えると嬉しいです。
回答1件
あなたの回答
tips
プレビュー