Некорректно работает код
Добавлено: 09 апр 2023, 21:25
Обычно спрайт игрока поворачивают таким способом
и это работает.
Но я решил пойти дальше. Зачем мне привязываться к управлению, подумал я, когда я могу привязаться к состоянию игрока. Говоря проще - следить за игроком и в зависимости от его состояния выполнять действия в коде.
Игрок пошел влево? Ок - флип спрайт. Направо? - флип. Прыгает? Меняем спрайт на спрайт прыжка. Идею вы поняли.
Текущий x=предыдущему x, а текущий y > предыдущего y? Значит игрок сейчас прыгает вверх.
И я написал такой код
Смысл - исходя из текущей координаты игрока transform и предыдущей по оси х и у делать вывод о состоянии игрока.
В результате:
поворот игрока при обычном движении работает, но с небольшой задержкой.
поворот игрока после прыжка работает с задержкой 1.5 сек (идет спиной 1.5 сек, после прыжка)
В чем моя ошибка или это вообще плохая идея и так не делается?
Синтаксис:
Используется csharp
horizontalInput = Input.GetAxis("Horizontal");
if (horizontalInput < 0) sr.flipX = true;
if (horizontalInput > 0) sr.flipX = false;
if (horizontalInput < 0) sr.flipX = true;
if (horizontalInput > 0) sr.flipX = false;
и это работает.
Но я решил пойти дальше. Зачем мне привязываться к управлению, подумал я, когда я могу привязаться к состоянию игрока. Говоря проще - следить за игроком и в зависимости от его состояния выполнять действия в коде.
Игрок пошел влево? Ок - флип спрайт. Направо? - флип. Прыгает? Меняем спрайт на спрайт прыжка. Идею вы поняли.
Текущий x=предыдущему x, а текущий y > предыдущего y? Значит игрок сейчас прыгает вверх.
И я написал такой код
Смысл - исходя из текущей координаты игрока transform и предыдущей по оси х и у делать вывод о состоянии игрока.
Скрытый текст:
В результате:
поворот игрока при обычном движении работает, но с небольшой задержкой.
поворот игрока после прыжка работает с задержкой 1.5 сек (идет спиной 1.5 сек, после прыжка)
В чем моя ошибка или это вообще плохая идея и так не делается?