C# 在统一中重置碰撞
我试图让我的角色在Unity中进行跌落攻击,当角色和敌人发生碰撞时,我想忽略BoxCollizedR2D的碰撞检测,然后撤销忽略。到目前为止,“忽略”碰撞仍在工作,但不会恢复到检测状态。因此,在第一次成功的空投攻击后,我的角色可以穿过敌人而不是碰撞。下面是我的代码C# 在统一中重置碰撞,c#,unity3d,C#,Unity3d,我试图让我的角色在Unity中进行跌落攻击,当角色和敌人发生碰撞时,我想忽略BoxCollizedR2D的碰撞检测,然后撤销忽略。到目前为止,“忽略”碰撞仍在工作,但不会恢复到检测状态。因此,在第一次成功的空投攻击后,我的角色可以穿过敌人而不是碰撞。下面是我的代码 private Rigidbody2D rb; private Animator anm; private Collider2D coll; private enum State {idle, running, jumping, at
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来重新启用碰撞检测?我是unity的新手,所以任何建议都会非常有用。谢谢大家! 想到的解决方案是在y轴上绑定位置,然后临时将碰撞器设置为触发。你绑住了y,这样球员就不会从地板上摔下来 否则,您可以检查动画何时结束,并将碰撞器设置回“检测”(Detection)希望您能理解
// Update is called once per frame
void FixedUpdate()
{
if(state==dropattck)
{
ChangeTrigger(player, true);
if(player.transform.position.y<floorvalue/*check your floor value*/)
{
transform.position.y = floorvalue;
}
}else
{
ChangeTrigger(player, false);
}
}
public void ChangeTrigger(GameObject obj,bool tf)
{
if(obj.GetComponent<Collider2D>().isTrigger!=tf)
obj.GetComponent<Collider2D>().isTrigger = tf;
}
问题是,如果你忽略碰撞,你可能不会得到OnCollisionExit2D…那么我如何在没有OnCollisionExit2D的情况下修复这个问题呢?谢谢,这看起来很有希望,我试着对敌人使用触发器,但它使它坠落。因为我是新来的统一体,所以从来没有想过要跨越y。你能给我看看你提供的建议的代码吗?非常感谢!这正是我想要的。只是一个小提示,我必须设置敌人。伤害在OnTriggerEnter2D方法上,因为现在角色的碰撞是在投掷攻击中触发的。