我想创建一个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 .

提前致谢 .