【发布时间】:2020-08-12 14:59:33
【问题描述】:
我设置了我的 Unity 2D 项目,因此子弹是触发器,将检测和碰撞但不与环境交互,而我的敌人是对撞机,这样它就可以做到这两点。我不知道它们是两种不同类型的事实是否会影响碰撞,但我想我会包括那个细节以防万一。我知道这个问题不是由于我的子弹移动得太快引起的,因为当我将子弹的速度调低时,问题仍然存在。我将在这里包含敌人碰撞和子弹碰撞检测的代码:
void OnCollisionEnter2D (Collision2D coll)
{
if (coll.gameObject.tag == "Proj") {
Destroy(gameObject);
Debug.Log("Hit");
}
现在是子弹:
void OnTriggerEnter2D(Collider2D hitInfo)
{
if (hitInfo.gameObject.tag == "Enemy") {
Destroy(gameObject);
}
子弹检测到与敌人的碰撞并自行删除,但敌人未检测到与子弹的碰撞并受到伤害/自行删除。即使我关闭了子弹代码的 Destroy(gameObject) 部分,这样它就不会在碰撞时自行破坏,我仍然遇到同样的问题,所以我知道在检测到任何东西之前删除它并不重要。我希望我的解释足够彻底,并且有人可以帮助我解决这个问题。 检查员图片:https://imgur.com/a/TLfcNcp
【问题讨论】:
-
我们需要查看inspector才能真正了解每个collider和tags等的设置...
-
如果速度太高,可以忽略碰撞。如果是这种情况,我可以回答一个解决方案。
标签: c# unity3d collision-detection