我想要创建一个2D游戏,为此我需要创建一些不停止以恒定速度飞行的刚体2D(至少在开始时)。我创建了一个GameObjects数组,并且everythink很好(我还创建了一个边界检查)。
我的问题是我给每个游戏对象一个相等的速度保持相等(每个固定更新),但由于某种原因,他们不会保持直线移动(一个游戏对象越来越接近另一个游戏对象,远离另一个游戏对象等)
这是物理代码:
private void FixedUpdate(){
if (ballsAreMoving) {
foreach(GameObject ball in balls){
ball.gameObject.GetComponent<Rigidbody2D> ().velocity = ball.gameObject.GetComponent<Rigidbody2D> ().velocity.normalized * ballSpeed;
}
}
}
IEnumerator FireBalls() {
foreach(GameObject ball in balls){
////////////////Create ball
ball.transform.position = transform.position;
ball.SetActive(true);
////////////////Realese ball
ball.gameObject.GetComponent<Rigidbody2D> ().velocity = (new Vector2(lineDirection, 10) * ballSpeed);
yield return new WaitForSeconds(shootDelay);// Delay
}
}
在创建球之后调用FireBalls函数,并在调用FireBalls之后调用ballsAreMoving bool。
提前致谢。