Rigidbody.MovePosition在游戏中停止工作

时间:2018-01-13 13:09:43

标签: c# unity3d

我的游戏中发生了一种奇怪的行为。 以下内容附在我游戏中的游戏对象中:

void FixedUpdate()
{
    rb.MovePosition(transform.position + transform.forward * Time.deltaTime * speed);

}

出于我不知情的原因,我的物体在大约10秒后停止移动。我必须通过炸弹触发某种物理动作,如OnCollisionEnter,以便物体再次开始移动。我研究了睡眠刚体的优化,但是如果对象是睡眠则打印出来是错误的。

我该怎么做才能阻止我的物体停止移动?

2 个答案:

答案 0 :(得分:1)

我已经下载了你的.unitypackage,我想我可能知道你的问题是什么:

我已经搞乱了你的RigidBody和Collider设置。似乎没有什么能解决这个问题,但我注意到这个玩家实际上是传送的。这很奇怪,似乎游戏真的很滞,这几乎是不可能的,因为你只有一个GameObject。在我看来,这是代码相关的东西。所以我去看看你的EnemyScript.cs是如何写的。我注意到你正在使用FixedUpdate和Update。我不建议这样做,因为你每隔0.02秒调用一次东西,每帧结束一次。

我已尝试从rb.MovePosition(transform.position + transform.forward * Time.deltaTime * speed);中取出FixedUpdate并将其添加到未解决问题的Update。但后来我在Update ()分析了你在做什么。 transform.rotation = Quaternion.Euler(transform.rotation.eulerAngles.x, yRotation, 0);这对我没有意义。代码确实如此,但为什么你使用它对我没有意义。所以我评论了整个Update ()部分。添加10到最大速度和2到最小速度并完成!

您的Kubelwagen一直骑到您的平台结束。如果我不得不猜测,你的敌人不断地试图蜷缩在地上,在某些时候,它会成功,这就是它停止的原因。请告诉我这是否能解决您的问题。

答案 1 :(得分:0)

您是否尝试将此代码保留在内         LateUpdate() 方法有时这也解决了