Единство - Аниматор не позволит не мне и не коду отключить коллайдер. Почему? - PullRequest
0 голосов
/ 01 мая 2020

У меня есть игровой объект персонажа, с аниматором и коллайдером.

Когда аниматор включен, коллайдер не может быть изменен во время выполнения, хотя его можно изменить в режиме редактирования сцены, через инспектор.

Независимо от того, какие свойства аниматора я изменяю через инспектор, ничего не происходит. Функцией, которую я пытался исправить, были фреймы непобедимости - сопутствующая процедура, отключавшая хит-бокс персонажа на несколько секунд.

Я попытался включить и отключить свойство 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");.

Редактировать:

Для пояснения я хочу узнать root проблемы, с которой я столкнулся , поскольку я подозреваю, что из-за этой root.

у меня может возникнуть больше проблем. также отредактировал неважные строки кода.

1 Ответ

0 голосов
/ 01 мая 2020
//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 ?
     }
}

psdt; вызвать сопрограмму как StartCoroutine (ActivateInvincibility ()); Не используйте строковое имя.

...