我的投射物不会在2D侧面滚动Unity项目中与敌人相撞吗?

时间:2019-01-19 12:30:14

标签: c# unity3d collision-detection collision

顾名思义,我最近才刚开始学习Unity,我正在练习制作侧面滚动射击游戏。我一直在遵循有关Udemy的课程,并且(据我所知)我一直在遵循导师对这封信的指示,但在他对其进行测试的那一刻,它的效果很好,因为射弹直接穿过了我的敌人。 / p>

在这一点上,我有些难过,所以我想在这里发帖看看你们的想法。我敢打赌,这是我从未做过的非常简单的事情。

请在下面查看我的弹丸代码:

using UnityEngine; using System.Collections;

public class DestroyEnemyAndProjectile : MonoBehaviour {

public GameObject WhiteExplosion;
public GameObject OrangeExplosion;

void Start()
{

}


void Update()
{

}

void OnCollisionEnter2D (Collision2D tempCollision)
{
    if (tempCollision.gameObject.tag == "Collision")
    {
        spawnParticles(tempCollision.transform.position);

        Destroy(tempCollision.gameObject);
    }

}

void spawnParticles(Vector2 tempPosition)
{
    Instantiate(WhiteExplosion, tempPosition, Quaternion.identity);
    Instantiate(OrangeExplosion, tempPosition, Quaternion.identity);
}
}

感谢您的帮助!

我确实向他们发布了一个问题,得到了答复,他们建议说,射弹的速度过快,并检查是否附有Rigidbody 2D-两者都已收集

2 个答案:

答案 0 :(得分:0)

确保您要与之碰撞的对象的标签“ Collision”具有相同的大小写。 如果不是,则可以通过以下方式实现:

1. Selecting the GameObject to be collided with
2. In the top-right, select the Tag property
3. Add tag, click the plus and type in "Collision"
4. Select the GameObject again, and select the "Collision" tag from the Tag property dropdown

否则,如果不是这个问题。确保弹丸具有Collider2D组件类型,并且弹丸或与之碰撞的对象具有Rigidbody2D。

答案 1 :(得分:0)

首先,我想了解一下此脚本的当前行为。是否调用了碰撞方法,并且弹丸仍然穿过敌人?还是根本没有调用碰撞方法?

话虽如此,但为了使碰撞正常进行,您应该检查以下这些事情:

  • 确保射弹和敌人身上都装有Collider2D组件。
  • 确保弹丸和/或敌人(至少要其中之一)附有Rigidbody2D。
  • 确保将弹丸层和敌人层设置为在碰撞矩阵中发生碰撞(您可以在Edit-> ProjectSettings-> Physics中找到碰撞矩阵)
  • 确保敌方GameObject的标记设置为“碰撞”。

P.S:欢迎来到Unity,实际上,此类问题通常是由您可能错过的超级简单问题引起的。