Unity3d 对撞机的触发和运动

Unity3d 对撞机的触发和运动,unity3d,Unity3d,我正在做一个塔防风格的游戏。我有一个玩家游戏物体和一个球体对撞机,炮塔向它发射射弹。射弹有太空舱对撞机。当玩家游戏对象移动时,OnTriggerEnter事件为投射物的碰撞器触发。当玩家不移动时,他们不会移动。当我添加新的炮塔时也是如此。炮塔有一个大型球体对撞机,用来确定游戏物体是否足够近,可以射击。当我在玩游戏时向场景中添加新的炮塔时,在我移动玩家游戏对象之前,OnTriggerEnter不会出现,即使它已经在炮塔的球体碰撞器中 视频: 我怎样才能解决这个问题?我怀疑这是一个bug,只是我不了

我正在做一个塔防风格的游戏。我有一个玩家游戏物体和一个球体对撞机,炮塔向它发射射弹。射弹有太空舱对撞机。当玩家游戏对象移动时,
OnTriggerEnter
事件为投射物的碰撞器触发。当玩家不移动时,他们不会移动。当我添加新的炮塔时也是如此。炮塔有一个大型球体对撞机,用来确定游戏物体是否足够近,可以射击。当我在玩游戏时向场景中添加新的炮塔时,在我移动玩家游戏对象之前,
OnTriggerEnter
不会出现,即使它已经在炮塔的球体碰撞器中

视频:


我怎样才能解决这个问题?我怀疑这是一个bug,只是我不了解Unity更新,或者与collider触发器有关。

我不知道这是否是一个bug,但声明

OnTiggerstay几乎被称为每个对撞机的所有帧 另一个是触动扳机的。”

也许这同样适用于OnTiggerEnter,这里的问题是“几乎”

在碰撞的至少其他部分有刚体吗?同样的文档(以及
OnTriggerEnter
文档)也指出

请注意,只有当其中一个碰撞器 有一个刚体连接”

希望您能找到解决问题的正确方法,但作为一种解决方法,您可以尝试将玩家的碰撞器设置为子
GameObject
,并在每一帧上稍微移动它。如果您在子
GameObject
上没有任何与渲染相关的内容,那么没有人会注意到该黑客行为


或者,可以通过在更新函数中计算到玩家的距离来处理投射物。炮塔可以在其启动功能中进行相同的计算。

。您的游戏对象是否附着有刚体?还是射弹?我在射弹上加了一个刚体,当物体不移动时,它解决了触发器的问题。非常感谢。我确实注意到,弹丸的运动(神经质、神经质、前后不一致)立即降低了性能。我在刚体上设置了“是运动学的”,这似乎已经固定了性能。这并没有解决新炮塔位置和OnTriggerEnter发射的问题。这似乎是另一个问题。我会继续或在堆栈上写一个单独的问题。玩家或炮塔上是否有刚体?看来,其中至少有一个必须有刚体才能解决炮塔问题。