【发布时间】:2020-06-24 23:04:58
【问题描述】:
我试图让我的角色在Unity 中进行投掷攻击,我想在角色与敌人发生碰撞时忽略boxCollider2D 的碰撞检测,然后撤消忽略。到目前为止,忽略冲突正在工作,但它没有恢复到检测。所以在第一次成功的投掷攻击后,我的角色可以穿过敌人而不是碰撞。下面是我的代码,
private Rigidbody2D rb;
private Animator anm;
private Collider2D coll;
private enum State {idle, running, jumping, attacking, falling, hurt}
private void OnCollisionEnter2D(Collision2D other) {
if (other.gameObject.tag == "Enemy") {
Enemy enemy = other.gameObject.GetComponent<Enemy>();
if (state == State.falling && anm.GetBool("dropAtk")) { // hurt enemy if drop attack
enemy.Hurt();
Physics2D.IgnoreCollision(other.gameObject.GetComponent<Collider2D>(), GetComponent<Collider2D>(), true);
} else { // take damange
if (other.gameObject.transform.position.x > transform.position.x) {
PlayerHurt("right");
} else {
PlayerHurt("left");
}
}
}
}
private void OnCollisionExit2D(Collision2D other) {
if (other.gameObject.tag == "Enemy") {
if (coll.IsTouchingLayers(ground)) {
Physics2D.IgnoreCollision(other.gameObject.GetComponent<Collider2D>(), GetComponent<Collider2D>(), false);
}
}
}
如何在角色落地时关闭IgnoreCollision 来重新启用碰撞检测?我是团结的新手,所以任何建议都会非常有帮助。谢谢!
【问题讨论】:
-
事情是,如果你忽略碰撞,你可能不会得到
OnCollisionExit2D... -
那么如果没有
OnCollisionExit2D,我该如何解决这个问题?