【问题标题】:Fast moving object passing through other objects快速移动的物体穿过其他物体
【发布时间】:2011-04-26 09:12:35
【问题描述】:

我对 Unity 很陌生,正在做一个小例子。实际上我有一个立方体,它用我的箭头键移动。现在我在路上有墙,我希望我的物体撞到墙上,但它穿过了墙。

我也用过这段代码,但没有结果:

http://www.unifycommunity.com/wiki/index.php?title=DontGoThroughThings

【问题讨论】:

    标签: collision-detection unity3d


    【解决方案1】:

    一般的想法是跟踪对象的最后一个位置,然后当它们移动时,将一条射线从当前位置投射到最后一个位置。检查光线是否有碰撞,如果有碰撞,则说明您已经穿过了一个物体。

    如果您已经穿过另一个对象,请将当前对象设置为碰撞报告的位置。下一帧将触发碰撞事件。

    您提供的链接实际上是这样做的。

    【讨论】:

    • 您的回答是正确的,但就我而言,我不知道为什么它不起作用。所以我对物体施加了力量,而不是改变它的位置。
    • 如果碰撞以较慢的移动速度而不是较大的移动速度工作,则代码可能存在问题。如果碰撞没有以较慢的速度进行,您可能错过了向对象添加刚体。如果你想通过代码而不是力来移动所有东西,只需将刚体设置为Is Kinematic 并且力不会影响它。
    【解决方案2】:

    如果你正在做类似的事情:

    transform.velocity.x += speed * Time.deltaTime;
    

    这不适用于碰撞,因为您实际上并没有与任何东西发生碰撞,您只是每帧按固定量传送。这会让你真正地传送到一个物体的内部。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      相关资源
      最近更新 更多