对撞机触发器和运动
Collider Trigger and Movement
我正在开发一款塔防类游戏。我有一个带有球体对撞机的玩家游戏对象,以及向其发射炮弹的炮塔。射弹有胶囊对撞机。当玩家游戏对象移动时,OnTriggerEnter
事件会为射弹的碰撞体触发。当玩家不动时,他们不会。当我添加新炮塔时也是如此。炮塔有一个大型球体对撞机,用于确定游戏对象是否足够近以进行射击。当我在播放时向场景添加新炮塔时,OnTriggerEnter
在我移动玩家游戏对象之前不会发生,即使它已经在炮塔的球体碰撞器内。
视频:http://screencast.com/t/x1QKtNEK
我该如何解决这个问题?我怀疑这是一个错误,只是我不了解 Unity 更新,或者与碰撞器触发器有关。
我不知道这是否是一个错误,但 unity's documentation 指出
"OnTriggerStay is called almost all the frames for every Collider
other that is touching the trigger."
也许同样适用 OnTriggerEnter
和 "almost" 是这里的问题。
你至少在碰撞的其他部分有刚体吗?相同的文档(和 OnTriggerEnter
文档)还指出
"Note that trigger events are only sent if one of the colliders also
has a rigidbody attached".
希望您能找到解决问题的合适方法,但作为解决方法,您可以尝试将玩家的对撞机设置为 child GameObject
并在每一帧上稍微移动它。如果您在 child GameObject
上没有任何与渲染相关的内容,那么没有人会注意到黑客攻击。
或者可以通过在更新函数中计算到玩家的距离来处理射弹。炮塔可以在它们的启动函数中进行相同的计算。
我正在开发一款塔防类游戏。我有一个带有球体对撞机的玩家游戏对象,以及向其发射炮弹的炮塔。射弹有胶囊对撞机。当玩家游戏对象移动时,OnTriggerEnter
事件会为射弹的碰撞体触发。当玩家不动时,他们不会。当我添加新炮塔时也是如此。炮塔有一个大型球体对撞机,用于确定游戏对象是否足够近以进行射击。当我在播放时向场景添加新炮塔时,OnTriggerEnter
在我移动玩家游戏对象之前不会发生,即使它已经在炮塔的球体碰撞器内。
视频:http://screencast.com/t/x1QKtNEK
我该如何解决这个问题?我怀疑这是一个错误,只是我不了解 Unity 更新,或者与碰撞器触发器有关。
我不知道这是否是一个错误,但 unity's documentation 指出
"OnTriggerStay is called almost all the frames for every Collider other that is touching the trigger."
也许同样适用 OnTriggerEnter
和 "almost" 是这里的问题。
你至少在碰撞的其他部分有刚体吗?相同的文档(和 OnTriggerEnter
文档)还指出
"Note that trigger events are only sent if one of the colliders also has a rigidbody attached".
希望您能找到解决问题的合适方法,但作为解决方法,您可以尝试将玩家的对撞机设置为 child GameObject
并在每一帧上稍微移动它。如果您在 child GameObject
上没有任何与渲染相关的内容,那么没有人会注意到黑客攻击。
或者可以通过在更新函数中计算到玩家的距离来处理射弹。炮塔可以在它们的启动函数中进行相同的计算。