【发布时间】:2020-06-24 14:26:28
【问题描述】:
我正在制作像超级马里奥这样的游戏。玩家是一个圆圈,敌人是一个撞墙后左右移动的正方形。如果敌人从侧面接触玩家,玩家就会死亡,因此为了生存,玩家必须跳到敌人的头上杀死它。
我将敌人分为身体和头部两部分(身体是父母,头部是孩子)。现在杀死玩家已经完成,但我坚持杀死敌人。 当玩家触摸头部(孩子)时,我如何杀死(摧毁)父母?
【问题讨论】:
我正在制作像超级马里奥这样的游戏。玩家是一个圆圈,敌人是一个撞墙后左右移动的正方形。如果敌人从侧面接触玩家,玩家就会死亡,因此为了生存,玩家必须跳到敌人的头上杀死它。
我将敌人分为身体和头部两部分(身体是父母,头部是孩子)。现在杀死玩家已经完成,但我坚持杀死敌人。 当玩家触摸头部(孩子)时,我如何杀死(摧毁)父母?
【问题讨论】:
您应该能够将碰撞器添加到孩子/头部,BoxCollider2D for example。然后你可以处理碰撞事件并调用父对象的方法。
它看起来像:
// In the child/head
void OnCollisionEnter2D(Collision2D col)
{
var goomba = transform.Parent.GetComponent<Goomba>();
goomba.Kill();
}
这可能是最简单的方法,但我认为有一种方法可以将碰撞传播到父级,但不记得了。
编辑:
显然,
如果您对角色使用刚体,您可以直接使用它。 :)
【讨论】:
public GameObject parent; private void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.CompareTag("player")) { Destroy(parent); } }