1

我有一个游戏,我希望我的玩家从一个平台跳到另一个平台。在我的平台上,我有一个盒子对撞机。

当我尝试跳跃时,有时我的玩家会撞到对撞机的一侧并开始磨蹭它并滑倒并最终触发死亡条件。为了防止这种情况,我在我的平台旁边放了一个触发对撞机。我还将触发对撞机放在盒子对撞机下方,这样万一我的玩家跳到边缘,他就不会同时激活两者。

如果触发器激活,我会玩死亡功能,否则我会假设玩家已经进行了稳固的跳跃并继续其他游戏逻辑。但是,我注意到有时当玩家降落在平台边缘时,它会进入碰撞功能以及触发事件。

这很奇怪,因为我在场景视图中注意到玩家对撞机尚未进入平台下方的触发对撞机。

我已经尝试将光线投射添加到混音中,但我仍然遇到这个错误,即使有光线投射,我也不明白为什么OnTriggerEnter在玩家没有进入触发器时触发。

我确实考虑过玩家对撞机可能会推入平台对撞机,因为玩家正在以一定速度下落,但我认为它会出现在场景视图中。

带有网格和对撞机的图片

仅具有对撞机方向的图片

我的问题是,当我降落在平台对撞机上时,触发对撞机如何触发?我在它上面跳,而不是从下面跳。如果我完全错过了平台,触发器会按预期触发,但有时它会落在平台顶部,与触发对撞机没有重叠,仍然会触发它。

/e

草图

这是我的 3d 环境的一个侧面。这不是确切的描述,而是为你们简化它。我的玩家正在从一个平台跳到另一个平台,这两个平台都是用于各种方式和目的的 3d 立方体和盒子对撞机。在两个平台之间,但在稍低的水平上,我有一个触发对撞机。

当我的玩家击中触发器时,它的游戏就结束了。我的问题是有时我的玩家会像在草图中那样落在盒子对撞机的边缘,但是由于某种原因,当我的玩家对撞机没有穿透触发对撞机时,它会触发游戏结束触发对撞机,如您所见他们之间有足够的空间,他们甚至没有接触。

总而言之 - 当我的玩家和触发对撞机之间没有可见的接触时,我的 ontriggerenter 正在运行,问题是为什么?

实际游戏截图

忽略draw ray,如您所见,我的玩家对撞机牢牢地位于平台盒式对撞机的顶部,但是平台旁边和下方的对撞机的ontriggerenter被触发并且我的玩家进入死亡动画。我不能再具体了,现在由你们来帮助我并解释为什么会发生这种情况。我的玩家离他们没有接触的 triggercollider 很远。

4

1 回答 1

1

与往常一样,Stackoverflow 没有回应。

无论如何,我能够找到解决问题的方法。该解决方案很丑陋,不值得分享,但对于其他坚持碰撞检测的人来说,以下内容或以下内容的组合可能会帮助您找到解决方案。

1 - 您可以考虑将相互碰撞的刚体更改为连续或连续动态。这将增加性能开销,但会导致刚体之间更好的碰撞。

2 - 在设置,物理管理器中,您可以尝试打开默认求解器迭代。来自文档:解算器是小型物理引擎任务,它确定许多物理交互,例如关节的运动或管理重叠刚体组件之间的接触。使用 Default Solver Iterations 定义 Unity 在每个物理帧上运行的求解器进程数。这会影响求解器输出的质量,建议在使用非默认 Time.fixedDeltaTime 或配置要求更高的情况下更改属性。通常,它用于减少由关节或接触引起的抖动。

这些或这些的组合可能是值得关注的。

于 2017-11-27T10:49:56.780 回答