我有一个游戏,我希望我的玩家从一个平台跳到另一个平台。在我的平台上,我有一个盒子对撞机。
当我试图跳跃时,有时我的球员会撞到对手的一侧并开始对着它并且会滑落并最终触发死亡状态。为了防止这种情况,我在我的平台旁边放了一个扳机对撞机。我还将扳机对撞机略微放在箱子对撞机的下方,这样如果我的玩家跳到边缘,他就不会激活两者。
如果触发器激活,我会执行死亡功能,否则我认为玩家已经进行了稳定的跳跃并继续使用其他游戏逻辑。 但是,我注意到有时当玩家落在平台的边缘时,它会进入碰撞功能以及触发事件。
这很奇怪,因为我在场景视图中注意到玩家对撞机没有进入平台下方的扳机对撞机。
我已经尝试过添加raycast但我仍然遇到这个错误,即使是光线投射,我也不明白为什么OnTriggerEnter
在播放器没有触发时触发进入了触发器。
我确实考虑过这样一个事实:玩家对撞机可能会进入平台对撞机,因为玩家正以一定的速度下降,但我认为它会出现在场景视图中。
我的问题是,当我降落在平台对撞机上时,触发器对撞机怎么可能触发?我跳到它上面,而不是从它下面跳。如果我完全错过了平台,触发器会按预期触发,但有时它将落在平台顶部,与触发器对撞机没有重叠并且仍会触发它。
/ E
这是我的3D环境视图的一面。这不是确切的描述,而是为了简化它们。我的播放器从一个平台跳到另一个平台,这两个平台都是用于所有手段和目的的3d立方体与盒子对撞机。在两个平台之间,但是在稍低的水平,我有一个触发器对撞机。
当我的玩家击中触发器对撞机时,游戏结束。我的问题是有时我的玩家会像在草图中那样落在箱子对撞机的边缘但是由于某种原因,当我的玩家对撞机没有穿透扳机碰撞器时,它会触发游戏触发器对撞机,你可以看到有它们之间有足够的空间,甚至不会触碰。
总结一下 - 当我的玩家与扳机对撞机之间没有明显的接触时,我的ontriggerenter正在运行,问题是为什么?
忽略绘制光线,正如你所看到的,我的玩家对撞机牢牢地位于平台盒对撞机的顶部,然而触发平台下方和下方的对撞机的触发器,我的播放器进入死亡动画。我不能比这更具体,现在由你们帮助我解释为什么会发生这种情况。我的球员远离他们没有触碰的触发器。
答案 0 :(得分:1)
与往常一样,Stackoverflow没有响应。
无论如何,我能够找到解决问题的方法。解决方案是丑陋的,它不值得分享,但对于任何坚持碰撞检测的人来说,以下事情或以下内容的组合可能会帮助您找到解决方案。
1 - 您可以考虑将相互碰撞的刚体更改为连续或连续动态。这将增加性能开销,但会导致刚体之间更好的碰撞。
2 - 在设置中,物理管理器可以尝试调高默认求解器迭代次数。从文档中可以看出:求解器是小型物理引擎任务,它决定了许多物理交互,例如关节的运动或管理重叠的刚体组件之间的接触。使用默认求解器迭代来定义Unity在每个物理帧上运行的解算器进程数。这会影响求解器输出的质量,如果使用非默认的Time.fixedDeltaTime,或者配置要求很高,建议更改属性。通常,它用于减少关节或接触引起的抖动。
这些或这些的组合可能是值得关注的。