実現したいこと
敵を1秒ごとに向きを変えて動かし続けたい
前提
Unity2Dでシューティングゲームをっ作っています
敵をランダムに動かしたいのですが動きません
敵のオブジェクトにはRigidBody2DとBoxCollider2Dを付けています
それぞれの設定は以下の通りです
発生している問題・エラーメッセージ
これを付けたスプリクトが一切動かない
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class enemy2 : MonoBehaviour 6{ 7 private Rigidbody2D myRigidBody; 8 public float enemySpeed; 9 private float movePattern; 10 private float moveChangeSpeed = 100; 11 private float moveCT = 0; 12 // Start is called before the first frame update 13 void Start() 14 { 15 myRigidBody = this.gameObject.GetComponent<Rigidbody2D>(); 16 StartCoroutine(loop()); 17 } 18 private IEnumerator loop() { 19 while (true) 20 { 21 yield return new WaitForSeconds(1f); 22 onTimer(); 23 } 24 } 25 private void onTimer() 26 { 27 int movePattern = Random.Range(1, 9); 28 Debug.Log(movePattern); 29 } 30 void FixedUpdate() 31 { 32 Vector2 force = Vector2.zero; 33 if(movePattern == 1) 34 { 35 force = new Vector2(0,enemySpeed); 36 } 37 if(movePattern == 2) 38 { 39 force = new Vector2(0,enemySpeed*-1); 40 } 41 if(movePattern == 3) 42 { 43 force = new Vector2(enemySpeed,0); 44 } 45 if(movePattern == 4) 46 { 47 force = new Vector2(enemySpeed*-1,0); 48 } 49 if(movePattern == 5) 50 { 51 force = new Vector2(enemySpeed,enemySpeed); 52 } 53 if(movePattern == 6) 54 { 55 force = new Vector2(enemySpeed*-1,enemySpeed); 56 } 57 if(movePattern == 7) 58 { 59 force = new Vector2(enemySpeed,enemySpeed*-1); 60 } 61 if(movePattern == 8) 62 { 63 force = new Vector2(enemySpeed*-1,enemySpeed*-1); 64 } 65 myRigidBody.MovePosition(myRigidBody.position + force * Time.fixedDeltaTime); 66 } 67}
試したこと
一秒ごとでなくUpdateごとでやったときはできました

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/02/19 11:50