Unity:使用标签的 2D 碰撞检测
Unity: 2D Collision Detection Using Tags
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Bullet")
{
Destroy(gameObject);
Debug.Log("hit");
}
}
这是我的代码,我感谢那里有很多其他资源,但是我在互联网上查看过,只是不明白我哪里出了问题。我知道它可能很小。我正在尝试使用标签进行碰撞检测销毁 "this" 游戏对象。 Bullet 预制件有 Bullet 标签并且拼写完全相同,两个游戏对象都有一个刚体和一个 2D 盒子对撞机。
任何帮助都会很棒。
要检查的事项:
- Rigibody2D被模拟(inspector中Rigidbody2D模拟检查为真)
- none 的碰撞器设置为 isTrigger
- 因为这是 2d,所以确保两个精灵在同一层顺序或 z 顺序上
- 尝试调试并检查子弹击中了哪个对象
(我假设你有 Rigidbody2D 而不是你在问题中提到的 Rogidbody)
(如果所有这些都被检查然后只是为了测试尝试降低子弹的速度,如果子弹太快然后尝试将“碰撞检测”更改为继续)
大多数导入的东西“调试”
并在销毁之前调试而不是在
之后
更好的做法是使用 [=h11=] 代替:
private void OnCollisionEnter(Collision other) {
if(other.gameObject.CompareTag("Ground")) {
isJumping = false;
}
}
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Bullet")
{
Destroy(gameObject);
Debug.Log("hit");
}
}
这是我的代码,我感谢那里有很多其他资源,但是我在互联网上查看过,只是不明白我哪里出了问题。我知道它可能很小。我正在尝试使用标签进行碰撞检测销毁 "this" 游戏对象。 Bullet 预制件有 Bullet 标签并且拼写完全相同,两个游戏对象都有一个刚体和一个 2D 盒子对撞机。
任何帮助都会很棒。
要检查的事项:
- Rigibody2D被模拟(inspector中Rigidbody2D模拟检查为真)
- none 的碰撞器设置为 isTrigger
- 因为这是 2d,所以确保两个精灵在同一层顺序或 z 顺序上
- 尝试调试并检查子弹击中了哪个对象
(我假设你有 Rigidbody2D 而不是你在问题中提到的 Rogidbody)
(如果所有这些都被检查然后只是为了测试尝试降低子弹的速度,如果子弹太快然后尝试将“碰撞检测”更改为继续)
大多数导入的东西“调试” 并在销毁之前调试而不是在
之后更好的做法是使用 [=h11=] 代替:
private void OnCollisionEnter(Collision other) {
if(other.gameObject.CompareTag("Ground")) {
isJumping = false;
}
}