Rigidbody2D 通过 Box Collider 2D
Rigidbody2D to go through Box Collider 2D
我正在尝试为我正在制作的游戏制作一个计分系统;这是 Flappy Bird 的翻版。
我遇到的问题是,我设置了一个带有 rigidbody2d 和 box collider 的精灵作为分数;我试图做到这一点,以便当角色穿过那个精灵时;它会在分数上加一,但是当角色试图通过它时,它只会被推回屏幕的另一侧。
这当然是因为盒子对撞机,但如果没有这种方法,我不确定是否有其他方法可以做到这一点。这是检测角色是否击中管道或得分线的代码:
void OnCollisionEnter2D (Collision2D hit) {
if(hit.transform.gameObject.name == "Pipe(Clone)") {
die();
Debug.Log("hit");
}
if (hit.transform.gameObject.name == "Score(Clone)") {
Debug.Log("Score");
}
}
一切都记录得很好,但问题是这只鸟只是面对得分线,这不是应该发生的事情,请尝试帮助或建议我应该怎么做。
P.S。我是一个新手程序员;我有点知道我在做什么,但不太擅长调试和修复它们,谢谢。
您应该在编辑器中检查 Bird 对象碰撞器上的 "Is Trigger"。并使用:
void OnTriggerEnter2D(Collider2D col) {
if (col.transform.name == "Score")
Score++;
}
在鸟对象脚本中。
我正在尝试为我正在制作的游戏制作一个计分系统;这是 Flappy Bird 的翻版。
我遇到的问题是,我设置了一个带有 rigidbody2d 和 box collider 的精灵作为分数;我试图做到这一点,以便当角色穿过那个精灵时;它会在分数上加一,但是当角色试图通过它时,它只会被推回屏幕的另一侧。
这当然是因为盒子对撞机,但如果没有这种方法,我不确定是否有其他方法可以做到这一点。这是检测角色是否击中管道或得分线的代码:
void OnCollisionEnter2D (Collision2D hit) {
if(hit.transform.gameObject.name == "Pipe(Clone)") {
die();
Debug.Log("hit");
}
if (hit.transform.gameObject.name == "Score(Clone)") {
Debug.Log("Score");
}
}
一切都记录得很好,但问题是这只鸟只是面对得分线,这不是应该发生的事情,请尝试帮助或建议我应该怎么做。
P.S。我是一个新手程序员;我有点知道我在做什么,但不太擅长调试和修复它们,谢谢。
您应该在编辑器中检查 Bird 对象碰撞器上的 "Is Trigger"。并使用:
void OnTriggerEnter2D(Collider2D col) {
if (col.transform.name == "Score")
Score++;
}
在鸟对象脚本中。