【问题标题】:Cube moving through rigidbody立方体穿过刚体
【发布时间】:2015-10-17 13:02:46
【问题描述】:

统一 5.1.1f1 我有一个由脚本移动的立方体。每当刚体接触到它时,它就会将刚体移出它的路径。

但是在某些情况下,刚体在立方体的路径中,并且立方体穿过刚体。

例如在图片中,红色是可移动的立方体,灰色是刚体 -

如您所见,红色立方体可以移动到灰色刚体中。

来源是here

我也问了here的问题

立方体随着脚本移动 -

 transform.position = Vector3.MoveTowards (transform.position, 
 patrolPoints [currentPoint].position, moveSpeed * Time.deltaTime);

【问题讨论】:

    标签: unity3d game-physics unityscript rigid-bodies


    【解决方案1】:

    出现此问题是因为您的刚体(蓝色立方体)进入睡眠状态。这可以通过添加 GetComponent ().sleepThreshold = -1; 来解决。到你 PlayerMovement.cs 的 Start() 方法。

    【讨论】:

      【解决方案2】:

      正确答案

      对不起,我没有意识到你打算移动的是没有刚体的物体。如果是这种情况,您必须使用 Vector3.MoveTowards()transform.Translate(),然后在 FixedUpdate() 函数中这样做而不是 Update() 并使用 Time.fixedDeltaTime 而不是 Time.deltaTime 这将使您的动作增量同步到 Unity 的物理帧,它们发生在与渲染帧不同的时间间隔。这不是错误。

      原答案

      您不想将Vector3.MoveTowards()transform.Translate() 与要与其他实体交互的刚体一起使用。他们将完全按照您告诉他们的方式移动,无需任何互动。您需要改用rigidbody.AddForce()

      【讨论】:

      • 问题中,红色可移动立方体不是刚体。它只是一个立方体。我是否应该使用 Object.AddForce() 之类的东西移动立方体
      【解决方案3】:

      将刚体添加到红色立方体解决了这个问题。

      我应该把这个问题陈述放在统一的错误中吗?

      【讨论】:

        【解决方案4】:

        确保碰撞检测设置为连续。

        【讨论】:

          猜你喜欢
          • 2012-03-05
          • 1970-01-01
          • 2016-08-17
          • 1970-01-01
          • 2018-07-05
          • 2017-05-30
          • 1970-01-01
          • 2020-08-17
          • 1970-01-01
          相关资源
          最近更新 更多