Работая с Unity, столкнулся с проблемой - не могу никак создать анимацию персонажа и привязать её к кнопкам. В чём суть проблемы - Я создал четырёх кадровые клипы для движения персонажа во все стороны? создавал из четырёх картинок в стандартном "Animation". Теперь хочу привязать клипы к кнопкам.
Код:
public class Anim : MonoBehaviour {
Animator _anim;
void Start() {
_anim = GetComponent<Animator>();
}
void Update() {
if(Input.GetKey(Keycode.A)){
_anim.SetInteger("State", 3);
}
else {
_anim.SetInteger("State", 5);
}
if(Input.GetKey(Keycode.D)){
_anim.SetInteger("State", 4);
}
else {
_anim.SetInteger("State", 5);
}
if(Input.GetKey(Keycode.W)){
_anim.SetInteger("State", 1);
}
else {
_anim.SetInteger("State", 5);
}
if(Input.GetKey(Keycode.S)){
_anim.SetInteger("State", 2);
}
else {
_anim.SetInteger("State", 5);
}
}
}
Вся проблема в том, что каждый следующий if-else поменяет значение свойства "State" в конечном автомате аниматора.
Решение простое - нужно сделать общий else, который будет отрабатывать, если никакая клавиша не нажата. Более того, поскольку в каждый отдельный момент времени автомат имеет только одно состояние, если смысл связать все if'ы с помощью if-else if
'ов.
Верный код со всеми правками:
public class Anim : MonoBehaviour {
Animator _anim;
void Start() {
_anim = GetComponent<Animator>();
}
void Update() {
if(Input.GetKey(Keycode.A)){
_anim.SetInteger("State", 3);
}
else if(Input.GetKey(Keycode.D)){
_anim.SetInteger("State", 4);
}
else if(Input.GetKey(Keycode.W)){
_anim.SetInteger("State", 1);
}
else if(Input.GetKey(Keycode.S)){
_anim.SetInteger("State", 2);
}
else {
_anim.SetInteger("State", 5);
}
}
}
Ситуация с отдельными if'ами будет работать, но такой подход сохранит вам пару проверок условий :)
Виртуальный выделенный сервер (VDS) становится отличным выбором
Во время освоения паттерна столкнулся с несколькими проблемами, которые опишу в данном вопросеВ своей программе из сторонних библиотек...
В Laravel, через $text = DB::table('articles')->select('text')->get(); получил переменную с результатом ` Object (
Не могу понять как работают валидаторы в YII, вот мне приходит пост запрос в контроллер: