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