Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使子游戏对象影响父游戏对象?_C#_Unity3d - Fatal编程技术网

C# 如何使子游戏对象影响父游戏对象?

C# 如何使子游戏对象影响父游戏对象?,c#,unity3d,C#,Unity3d,我正在做一个像超级马里奥一样的游戏。玩家是一个圆圈,敌人是一个正方形,在撞到墙后左右移动。如果敌人从侧面碰到玩家,玩家就会死亡,因此为了生存,玩家必须跳到敌人的头上杀死它 我把敌人分为身体和头部两部分,身体是父母,头部是孩子。现在杀掉玩家已经完成了,但我仍然坚持杀掉敌人。当玩家接触头部子对象时,如何杀死并摧毁父对象?您应该能够向子对象/头部添加碰撞器。然后可以处理碰撞事件并调用父对象上的方法 它看起来像: // In the child/head void OnCollisionEnter2D(

我正在做一个像超级马里奥一样的游戏。玩家是一个圆圈,敌人是一个正方形,在撞到墙后左右移动。如果敌人从侧面碰到玩家,玩家就会死亡,因此为了生存,玩家必须跳到敌人的头上杀死它


我把敌人分为身体和头部两部分,身体是父母,头部是孩子。现在杀掉玩家已经完成了,但我仍然坚持杀掉敌人。当玩家接触头部子对象时,如何杀死并摧毁父对象?

您应该能够向子对象/头部添加碰撞器。然后可以处理碰撞事件并调用父对象上的方法

它看起来像:

// In the child/head
void OnCollisionEnter2D(Collision2D col)
{
    var goomba = transform.Parent.GetComponent<Goomba>();
    goomba.Kill();
}
这可能是最简单的方法,但我认为有一种方法可以将碰撞传播到父对象,但我不记得了

编辑:

显然

如果将刚体与角色一起使用,则可以开箱即用:


在这个答案中发现:

这就是我试图做的,我将这个脚本添加到了子公共游戏对象父对象中;private void OnTiggerEnter2dCollider2D other{if other.gameObject.CompareTagplayer{Destroyparent;}}@kuruttakao您使用的是触发器方法,该方法将在其中一个碰撞器设置为触发器时使用。触发器实际上不会与对象发生碰撞,但当对象重叠时,碰撞框会告诉您。