我正在制作一款小型游戏,其中基本的游戏机制正在拖动整个关卡。我的玩家G.O.是拖拽水平周围其他物体的人。这个GO(玩家GO)有一个rigidBody2D组件,为了拖动其他对象,我将拖动的对象转换为玩家的子对象,这样我只能通过rigidBody组件移动玩家,并且拖动的对象沿着玩家对象。
问题是,每当应该通过接触杀死玩家的东西与被拖动的物体接触时,即使玩家没有开始接触危险物体,玩家的死亡仍然会触发。这显然不是预期的结果,如果用于杀死玩家的东西与拖动的物体接触但不与玩家接触,则不应该杀死玩家。我该如何解决这个问题?
编辑:通过杀戮我的意思是摧毁玩家GO。答案 0 :(得分:0)
如果您删除了您的父GameObject,它的所有子GameObjects也将删除它。为了不删除拖动的对象,您应该在删除父GameObject之前将其删除。你可以这样做:
YourChildGameObject.transform.SetParent(OtherParentGameObject, false);
答案 1 :(得分:0)
这是碰撞问题。 为玩家和敌人设置不同的图层。 转到编辑 - >项目设置 - >物理。在底部,您将看到一个碰撞列表。您可以检查哪些图层与哪些图层相撞。将“敌人”图层设置为仅与“播放器”图层发生碰撞。
另一种方法是检查敌人与OnCollisionEnter或OnTriggerEnter发生碰撞的内容(取决于你是如何做的)。你可以这样做:
//You can change this to OnTriggerEnter and "Collision" with "Collider"
void OnCollisionEnter(Collision col)
{
if (col.gameObject.name == "player")
{
//Kill the player
}
}
祝你好运!