Я создаю основную c 2D игру-боец и пытаюсь заменить прежнюю систему ввода новой системой ввода. По этой причине обновление старых систем будет ожидать нажатия кнопок, а затем вызывать соответствующие функции при их нажатии. Движение было на самом деле самой легкой частью, просто оснастить 1D Vector и затем захватить поплавок для использования с движением, потрясающе. Однако сложность заключается в нажатии клавиш, чтобы изменить вещи в игре. Например, у меня есть вход 's', который должен привести к методу Crouch (). Этот метод изменяет анимацию и изменяет хитбоксы на более короткие и сообщает атаке также использовать меньшие хитбоксы. Метод Stand () вызывается при освобождении 's', чтобы вернуть все так, как оно есть. Мой объект Player Input установлен на «Invoke Unity Events», что приводит к соответствующему необходимому методу. Проблема в том, что даже если эти события установлены на pu sh и их отпускание, они считываются как эффект переключения вместо триггеров нажатия и отпускания (соответственно). Это делает то же самое с моей функцией атаки, потому что заставляет анимацию воспроизводиться дважды, один для нажатия и один для отпускания. Есть ли исправление для этого или это в настоящее время ошибка? Изменить: Вот некоторые изображения для пояснения и код, используемый для отражения всего, что происходит с функциональностью атаки. Дайте мне знать, если нужно что-то еще
public void Attack(){
anim.SetTrigger("attack");
StartCoroutine(wait());
}
IEnumerator wait(){
if(!isCrouched){
yield return new WaitForSeconds(1.3f);
SHitBox.enabled = true;
yield return new WaitForSeconds(.5f);
SHitBox.enabled = false;
}
if(isCrouched){
yield return new WaitForSeconds(1.3f);
CHitBox.enabled = true;
yield return new WaitForSeconds(.5f);
CHitBox.enabled = false;
}
}
Связывание Действие