Как сделать ходьбу в unity 2d
Перейти к содержимому

Как сделать ходьбу в unity 2d

CharacterController.Move

Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста <a>попробуйте снова</a> через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Параметры

Описание

Более сложная функция движения, принимающая абсолютные дельты перемещения.

Пытается двигать контроллер на motion , движение будет ограничено только столкновениями. Будет скользить вдоль коллайдеров. CollisionFlags — это совокупность столкновений, которые произошли во время движения. Эта функция не применяет никакой гравитации.

Скрипт движения 2D персонажа

Еще один скрипт управления персонажем, заточенный под 2D физику. В отличии от прочих, здесь имеются некоторые настройки. Возможен выбор осей. Например, если выбрать только ось Х, в этом случаи включается режим как для платформера, персонаж может двигаться по горизонтали и использовать прыжок. Если выбрать оси ХY, тогда скрипт переходит в режим как для скроллера, проще говоря, подходит для управления неким самолетом или вроде того, объект может двигаться не только по горизонтали, но и по вертикали, а та-же самая клавиша, что и в первом варианте, на этот раз выполняет роль ускорителя, то есть добавляет скорости. Кроме того, есть опция отслеживания позиции курсора, чтобы персонаж смотрел на него.

Создаем новый C# скрипт Player2DControl, со следующим содержанием:

speed — скорость движения, как не странно.

addForce — если выбран режим Оnly X, будет использовано для прыжка, при нажатии соответствующий клавиши. Во втором режиме, значение addForce будет прибавлено к speed, тем самым придавая ускорение.

lookAtCursor — отслеживание позиции курсора, персонаж будет вращаться по оси Z. Важно помнить, что лицом считается ось Х.

isFacingRight — если на старте сцены персонаж смотрит вправо, то надо ставить true.

При движении только по горизонтали, разворот персонажа осуществляется через функцию Flip. Так же, чтобы прыжок был возможен, все объекты по которым возможно передвижение, как бы земля/поверхность, у всех них должен быть тег Ground.

Скрипт ходьбы и бега Unity2D

С ходьбой у персонажа всё отлично, попытался сделать аналогично бег, только увеличть его скорость вдвое, то есть walkSpeed * 2, только когда зажата клавиша Shift и A или D, делал не через стринг, а через бул. Почему с ходьбой все работает отлично, а с бегом такие траблы?

GetKey — зажата ли клавиша

GetKeyDown — событие нажатия

Условия в FixedUpdate сломанные, if (playerRuns) else не имеет значения, поскольку что бы оно не сделало if (buttonPressed == RIGHT) else if (buttonPressed == LEFT) else всё равно изменят результат.

Ещё при одновременном A и D игнорируется A, что плохо.

Твои простые if (bool) X = A else X = B легко заменяются конструкцией X = bool ? A : B .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *