总结如下:我想从一个OnTriggerEnter2D事件中找到碰撞中涉及的两个碰撞器。我该怎么做呢?
我有两个游戏对象。它们都有一个对撞机和一个触发器。
在物体A上,它被触发器包围着。在对象B上,触发器只围绕着特定的部分。
当对象A的触发器接触到对象B的任何对撞器时,无论是否触发:我希望对象B失去生命值。反之亦然。
但是,当对象A的触发器接触到对象B的对撞器(而不是触发器)时,两个对象都会失去生命值。
我在控制台中得到了这个
Object A hit Object B
Object B hit Object A
我得出的结论是,对象A的触发器调用了对象B上的Ontrigger2d事件。
我认为处理这个问题的最好方法,就是找出哪个对撞机“发现”了碰撞,并据此决定:忽略碰撞。
我怎样才能找到哪个触发器“发现”了碰撞?
也发布在Unity论坛上
编辑:代码
private void OnTriggerEnter2D(Collider2D collision)
{
Consumeable con = collision.GetComponentInParent<Consumable>();
if (con != null && con.gameObject != gameObject)
{
Debug.Log(gameObject.name + " hit " + con.gameObject.name);
con.Damage(1);
}
}
发布于 2018-06-03 02:25:26
实现这一点的一种方法是创建子游戏对象来处理其中一个碰撞器。
例如,您有一个具有非触发对撞器的父对象,以及一个具有触发对撞器的子对象。
这样就很容易弄清楚哪些对撞机参与了碰撞。
https://stackoverflow.com/questions/50658748
复制相似问题