rigidbody.速度突然冻结

本文关键字:冻结 突然 速度 rigidbody | 更新日期: 2023-09-27 18:13:12

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

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

rigidbody.速度突然冻结

如果你设置一个对象为非活动状态,它将"冻结":

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

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

所以不要让对象处于非活动状态。保存你的初始位置在Vector3。

 Vector3 initPosition = gameObject.rigidbody.position;

并在条件

中设置此值
if (transform.localPosition.z <= -760) {
 gameObject.rigidbody.position = initPosition;
}

这可能会解决这个问题,当您只提供速度时,它会不可避免地在某个时间后冻结。保持速度的诀窍是你必须加上time。deltatime

这将保持刚体的更新和速度不会停止。

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