刚体。速度突然冻结

时间:2014-07-15 12:04:07

标签: c# unity3d velocity

我是团结的新手。我正面临一个移动物体的问题。我为gameObject指定了一个速度,但是当它到达特定位置(23,14,-750)时,游戏对象会冻结。我不知道为什么。有时它会继续移动物体,有时会突然停止。出了什么问题?谢谢

    {
            if (transform.localPosition.z <= -760) {
                    gameObject.SetActive (false);
            }
            gameObject.rigidbody.velocity = new Vector3 (0, 0, -speed);

    } 

3 个答案:

答案 0 :(得分:2)

如果您将对象设置为非活动状态,它将&#34;冻结&#34;:

 if (transform.localPosition.z <= -760) {
     gameObject.SetActive (false);
 }

不确定你期望SetActive(false)做什么,但它有停止所有逻辑的结果,包括特定游戏对象的位置更新和碰撞。

答案 1 :(得分:0)

所以不要让你的对象无效。保存您在Vector3中的初始位置。

 Vector3 initPosition = gameObject.rigidbody.position;

并在您的条件中设置此值

if (transform.localPosition.z <= -760) {
 gameObject.rigidbody.position = initPosition;
}

答案 2 :(得分:0)

这可能会解决问题,当您仅提供速度时,它不可避免地会在一段时间后冻结。保持速度的技巧必须将速度与Time.deltatime相加

这将使刚体保持更新,并且速度不会停止。

{
        if (transform.localPosition.z <= -760) {
                gameObject.SetActive (false);
        }
        gameObject.rigidbody.velocity = new Vector3 (0, 0, -speed+Time.deltatime);

}