【发布时间】:2018-06-02 16:06:38
【问题描述】:
总结如下: 我想从 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);
}
}
【问题讨论】:
-
听起来你在两个对象上都有类似的脚本,试图损坏它接触到的另一个触发器。只有其中一个应该应用损坏,另一个应该忽略
OnTriggerEnter2D回调。如果您发布您目前拥有的代码会有所帮助。 -
用代码编辑
-
不确定你到底在问什么。 @SwiftingDuster 的评论是否正确?您只想对一个游戏对象施加伤害?
-
这是一个场景:对象 A 用触发器接触到对象 B 的对撞机。对象 B 应该是唯一受到伤害的对象。
-
@WhoKnows 然后在 Object b OnTrigger 函数中使其受到伤害。