C# 刚体速度突然冻结

C# 刚体速度突然冻结,c#,unity3d,velocity,C#,Unity3d,Velocity,我是新来的统一体。我面临着一个移动物体的问题。我给游戏对象指定了一个速度,但当它到达一个特定的位置(23,14,-750)时,游戏对象冻结。我不知道为什么。有时物体继续移动,有时突然停止。怎么了?多谢各位 { if (transform.localPosition.z <= -760) { gameObject.SetActive (false); } gameObjec

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

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

    } 
{

如果(transform.localPosition.z将对象设置为非活动,它将“冻结”:


if(transform.localPosition.z所以不要使对象处于非活动状态。将初始位置保存在Vector3中

 Vector3 initPosition = gameObject.rigidbody.position;
并在您的条件下设置此值

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

if(transform.localPosition.z这可能会解决这个问题,当您只提供速度时,它会在一段时间后不可避免地冻结。保持速度不变的诀窍是必须将速度与时间相加。deltatime

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

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

} 
{

如果(transform.localPosition.z您到底想实现什么?我不希望对象冻结。我只希望它继续移动。但有时它会在特定位置冻结。那么为什么您要在上述条件下将对象设置为非活动状态?当它达到760个位置时。z我希望它处于非活动状态,从其初始位置重新开始,但问题是它在达到760之前是冻结的。LearnCos2D你的问题是什么。不要在更新函数中禁用你的对象。当它设置为非活动时,其余的代码将不会执行。这是正确的,但我在达到760时调用SetActive。但是我的对象在达到此值之前是冻结的。它在750冻结。你如何检查它e位置?例如,如果您将此更新记录在更新中,它可能在停止后不执行更新方法,因此最后一个日志将保持750。它足够接近,可以假设对象不再处于活动状态。您可能希望在SetActive行运行时记录它。实际上,此语法在更新方法中。您认为这是问题所在吗?
{
        if (transform.localPosition.z <= -760) {
                gameObject.SetActive (false);
        }
        gameObject.rigidbody.velocity = new Vector3 (0, 0, -speed+Time.deltatime);

}