1

我有一个角色游戏对象,有一个动画师和一个对撞机。

无论何时打开动画器,在运行时都无法更改碰撞器,但可以通过检查器在场景编辑模式下更改它。

无论我通过检查器更改什么动画属性,都没有任何反应。我试图修复的功能是无敌帧 - 一个协同程序,禁用角色的命中框几秒钟。

我尝试启用和禁用对撞机的 isTrigger 属性,但问题仍然存在 - 当 isTrigger 打开时,角色仍然受到伤害。

代码:

private IEnumerator ActivateInvincibility()
    {
        // 3 seconds of invincibility
        _hit_zone.enabled = false;  // no effect
        _hit_zone.isTrigger = true;  // no effect either
        yield return new WaitForSeconds(3f);
        _hit_zone.enabled = true;
        _hit_zone.isTrigger = false;;
    }

正常调用,如下所示:StartCoroutine("ActivateInvincibility");.

编辑:

为了澄清,我想知道的是我遇到的问题的根源,因为我怀疑由于这一根源可能会出现更多问题。

我还编辑了不重要的代码行。

4

1 回答 1

0
//Added control flag
private bool isInvincibility = false;

private IEnumerator ActivateInvincibility()
{
    isInvincibility = true;
    //wait time
    isInvincibility = false;
}

void OnCollisionEnter(Collision collision)//or trigger {
     if(!isInvincibility && */Your condition tag name etc/*){
        //Damage ?
     }
}

psd; 调用协程为 StartCoroutine(ActivateInvincibility());。不要使用字符串名称。

于 2020-05-01T17:31:06.270 回答