Unity 2D游戏 - 使刚体以直线飞行

时间:2016-09-11 17:50:11

标签: c# unity3d unity5 rigid-bodies

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

提前致谢。

0 个答案:

没有答案