Зміст курсу
Бійцівська гра в Unity
Бійцівська гра в Unity
Переміщення Гравця
FixedUpdate та Update
Update()
Метод Update()
, який викликається один раз за кадр, використовується для регулярних оновлень, таких як обробка введення гравця та взаємодія з користувачем. Частота його виконання залежить від частоти кадрів, що може призводити до різної поведінки на різних пристроях.
FixedUpdate()
Метод FixedUpdate()
, який викликається з фіксованим інтервалом, ідеально підходить для оновлень, пов'язаних із фізикою, забезпечуючи надійне та передбачуване опрацювання сил, зіткнень і руху.
Використовуйте Update()
для регулярних оновлень, які не пов'язані з фізикою, наприклад, перевірка користувацького вводу або оновлення анімацій. Використовуйте FixedUpdate()
для оновлень, пов'язаних з фізикою, таких як переміщення об'єктів за допомогою Rigidbody або обробка зіткнень, щоб забезпечити більш плавну та надійну поведінку.
Код для руху
if (x != 0)
{
Vector2 velocity = rb.velocity;
if ((animator.GetCurrentAnimatorClipInfo(0))[0].clip.name != "attack")
{
velocity.x = x * Time.deltaTime * speed;
}
else
{
velocity.x = 0;
}
rb.velocity = velocity;
}
Цей фрагмент коду містить різні перевірки та присвоєння для керування рухом ігрового персонажа. Спочатку перевіряється, чи горизонтальна змінна руху x
не дорівнює нулю, після чого створюється змінна Vector2
для збереження поточної швидкості компонента Rigidbody. Також перевіряється, чи поточна анімація не є "attack", щоб визначити, чи персонаж знаходиться у стані атаки. Якщо не атакує, горизонтальна швидкість встановлюється на основі вводу, часу та швидкості; інакше горизонтальний рух зупиняється. Нарешті, швидкість Rigidbody оновлюється новими значеннями.
Дякуємо за ваш відгук!