【发布时间】:2020-07-14 06:13:42
【问题描述】:
我将以下脚本附加到地面游戏对象,以检测来自我的玩家子对象的碰撞,但由于某种原因,没有检测到碰撞。
我的玩家(父级,空游戏对象)附加了刚体和跳跃脚本,同时,子游戏对象(身体和脚)上只有盒子碰撞器。
很想知道为什么这不起作用:)
private void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.tag == "Body")
{
Debug.Log("Game over!");
}
else if (collision.gameObject.tag == "Feet")
{
Debug.Log("Alive!");
}
}
【问题讨论】:
-
为脚和身体添加刚体。如果您不希望它们受到物理影响,请将 isKinematic 设置为 true。子对象不继承其父对象的刚体组件。
-
我已经这样做了,但是玩家在推游戏时似乎随机飞来飞去。
-
如果你有两个物体的刚体和碰撞体在你按下播放时重叠,就会发生随机飞行的事情,但是,如果这两个物体的刚体都选中了 Is Kinematic,那么它们不应该交互彼此。如果其中一个或两个都未选中 Is Kinematic,则其中一个或两个都会飞来飞去。
-
我已经将刚体应用到子对象上,玩家不再像疯子一样飞来飞去,这很棒!但是我不能再移动玩家,我是否需要将移动脚本应用到我应用了刚体的所有子对象上?
-
这取决于你如何实现运动。没有更多关于你如何设置的细节,很难回答。
标签: unity3d collision-detection collision