Как сделать прыжок в unity 2d

Как сделать прыжок в unity 2d

177 просмотра

3 ответа

8 Репутация автора

Я хочу, чтобы мой персонаж прыгал, но у меня очень замедленное движение. Как будто персонаж телепортируется вверх, а не медленно поднимается. У тебя есть идеи? Я использую плитку и Unity 2019.1.0f2 .

rb.AddForce(Vector2.up * jumpForce) , rb.velocity = Vector2.up * jumpForce , rb.MovePosition(new Vector2(transform.position.x , transform.position.y+jumpForce) .

Вот остальная часть моего скрипта движения без ранее упомянутого кода:

Все в классе происходит от MonoBehaviour. А вот мои настройки твердого тела и плеера:

В плеере есть Box Collider 2D с настройками по умолчанию.

Пожалуйста помоги. Заранее спасибо.

Ответы (3)

плюса

527 Репутация автора

Сначала нужно вызвать методы Rigidbody from, FixedUpdate потому что именно здесь рассчитывается физика. Во-вторых, умножьте значение вашего вектора на Time.fixedDeltaTime .

Пример:

1 плюс

131 Репутация автора

если вы хотите физический прыжок, не используйте MovePosition. MovePosition просто переместит твердое тело в положение, зависящее от настроек интерполяции. Поскольку ваша интерполяция равна нулю, вы получаете «очень медленное движение».

Вместо этого вы должны использовать импульсную силу . Раньше вы только пробовали ускорение силы. Кроме того, ваше горизонтальное движение также должно меняться в зависимости от приближения силы. Попробуйте это так:

Чтобы проверить это, вы должны отключить горизонтальное движение на данный момент. Или вы можете сделать что-то вроде этого:

Еще несколько вещей:

-Никогда не проверяйте вход внутри цикла FixedUpdate! Ваша игра может работать со скоростью 100 кадров в секунду, и в зависимости от фиксированного обновления (это называется исправлением, потому что Unity пытается сохранить частоту кадров обновления физики), вы можете пропустить нажатие кнопки.

-Если вы используете MovePosition, используйте его только в FixedUpdate.

— Возможно, вы захотите изменить способ проверки ввода с помощью прыжка, а также можете проверить, заземлен ли плеер.

Читайте также:  Как скопировать массив в java

Следует также отметить, что следует избегать использования AddForce для ускорения в обновлении.

плюса

1 Репутация автора

У меня была эта проблема. Как будто персонаж телепортировался вверх, а не медленно поднимался.

Я решил это с изменением Unity Project. Я создал новый проект и использовал тот же код, и он работал отлично.

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

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

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

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

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

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

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

Читайте также:  Айпи тв портал на телевизор

Короче, делаю 2D игру в Unity.
Должно быть, чтобы игрок не мог "лететь" в воздухе при нажатии на "вверх", а мог только подпрыгнуть один раз. Конечно, когда отпускаю клавишу "вверх", игрок резко падает. Rigidbody2D на игроке висит… И так голову ломаю, и сяк — не понимаю, где косяк. Код:

  • Вопрос задан более года назад
  • 5303 просмотра

Что нужно что бы все заработало:
1) Скопировать код.
2) Объект на котором висит Rigidbody должен иметь этот скрипт и коллайдер (обязательно 2д, не триггер)
3) Пол (то, с чем соприкасается объект игрока) должен иметь Layer "Ground" и коллайдер2д (не триггер)

Суть в том, что при вводе вы должны запоминать факт ввода клавиши прыжка и игнорировать его до приземления (для этого использован метод OnCollisionEnter2D)

Исходя из этого дополните Ваш пример как Вам угодно.

Ссылка на основную публикацию
Как сделать нумерацию страницы в ворде
Microsoft Word — одна из самых часто используемых программ для работы с текстовыми документами. Когда текст слишком большой, для комфортной...
Как сбросить графический ключ на xiaomi
Что такое графический пароль? Графический пароль – аналог обычного пароля, который был создан для удобства ввода на мобильных телефонах с...
Как сбросить защитный код на нокиа
Секретные коды Nokia для сброса, проверки и настроек. На этой странице собраны все полезные секретные и не секретные коды для...
Как сделать обратную матрицу в excel
Приложение Excel выполняет целый ряд вычислений, связанных с матричными данными. Программа обрабатывает их, как диапазон ячеек, применяя к ним формулы...
Adblock detector