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);
}
如果你设置一个对象为非活动状态,它将"冻结":
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);
}