Как сделать прыжок от стены unity

Добавил пользователь Владимир З.
Обновлено: 17.09.2024

В этом уроке я покажу как на движке Unity сделать движение и прыжок персонажа. Так-же, объясню как указать количество .

Рассказываю, как в Unity реализовать прыжок с приземлением. Конечно, без анимаций, "на кубиках", но главное - как .

Привет! В этом видео я покажу как сделать прыжок в юнити с 3 состояниями - отпрыг, свободное падение и приземление.

Одно из самых простых, но важных действий, которые должен уметь ваш игровой персонаж, - это прыжок. В этом .

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

Уроки по созданию 2D платформера на Unity. Создание простого прыжка и его анимации в Unity 2D, а так же исправление .

Всем привет. В данном видео мы будем создавать возможность прыжка для персонажа. Мы создадим возможность .

В этом видео на примере курса "Unity Базовый курс: 2D платформер с нуля" мы покажем, как настраивать прыжок .

Привет! В этом видео я покажу как сделать кнопку прыжка в юнити на мобильных устроиствах включая андроид и IOS.

Охайо! Вы на канале Rimuru Dev В этом видео вы узнаете как с помощью метода Raycast определять столкновение с .

Георгий Коровин


Георгий Коровин

Виктор,
public float jumpSpeed=30;
Transform transform;
void Start()Rigidbody rb=GetComponent ();
Показать полностью.
transform=transform;
>
void FixedUpdate() if(Input.GetKey(KeyCode.Space)
rb.AddForce(transform.up*jumpSpeed,ForceMode.Impulse);
>
>

итого каждый тик если нажат пробел прибавляется импульс. надо делать проверку GetKeyDown в таком случае

Сергей Фурсов

Георгий Коровин


Георгий Коровин

Сергей Фурсов

Георгий Коровин


Георгий Коровин ответил Сергею

Сергей Фурсов

Сергей Фурсов

Часть кода
if (Input.GetButtonDown("Jump"))
<
Ray ray = new Ray(transform.position, Vector3.down);
RaycastHit hit;
Показать полностью.
if (Physics.Raycast(ray, out hit, 0.55f))
<
motor.Jump(JumpForce);
>
>

реализует прыжок
строка
if (Input.GetButtonDown("Jump")
делает фиксацию нажатия клавиши один раз
Часть кода
Ray ray = new Ray(transform.position, Vector3.down);
RaycastHit hit;
посылает лучь вниз.
if (Physics.Raycast(ray, out hit, 0.55f))
<
motor.Jump(JumpForce);
>
в этом условии проверяется нет ли столкновения луча с поверхностью под играком.
Сдесь полаагается что лучь пущени из точки 0.0.0 игрока, которая является его центром, а параметр Scale в трансформ объекта равен 1. тут я взяял не 0.5, а 0.55 f для большей точности.
и motor.Jump(JumpForce); реализует прыжок.
Эти два скрипта нужно повесить на один управляемый объект.
Логика там разделена, но их можно объединить и упростить.

Сергей Фурсов

После прыжка объект окажется в воздухе и повторное нажатие на прыжок - КЛ ПРОБЕЛ - снова вызовет эту часть кода, будет послан лучь в пол, но так как мы в воздухе лучь не коснется ничего и функция motor.Jump(JumpForce); не вызовется и соотв. не будет повторного импульса и полета в воздухе

Георгий Коровин


Георгий Коровин ответил Сергею

Георгий Коровин


Георгий Коровин ответил Сергею

Сергей Фурсов

Луч используется для проверки стоишь ты на земле или нет, все перемещения там на физике завязаны.
Вещай два скрипта на объект, на объект повесь твердое тело, а в сам объект засунь камеру. Приладь все это к скриптам.

У меня проблема с прыжком: если мой персонаж ХОДИТ на платформу X, он не будет прыгать, но когда она Прыгает на платформу X, она может совершить прыжок.

Для платформ В настоящее время я использую 2 2D-коллайдера Box Collider (один с установленным флажком "запускается")

Для персонажа В настоящее время я использую 2 Box Collider 2D (один с отмеченным флажком) и Rigidbody 2D.

Ниже приведен код для прыжков и заземления, который я сейчас пытаюсь использовать.

Ответы 2

Это происходит потому, что у ваших квадратов есть отдельные коллайдеры. Представьте себе это:

Есть два блока: A и B . Вы стоите на блоке A . Теперь попробуйте пройтись по блоку B . Как только ваш коллайдер Rigidbody2D касается блока B , ваш персонаж получает событие OnTriggerEnter2D(. ) . Теперь вы утверждаете, что заземлены. Однако в этот момент вы все еще сталкиваетесь с блоком A . Как только ваш Rigidbody2D больше не сталкивается с блоком A , ваш персонаж получает OnTriggerExit2D(. ) . Теперь вы утверждаете, что больше не обоснованы. Но на самом деле вы все равно сталкиваетесь с блоком B .

Решение

Вместо переменной bool для проверки заземления можно использовать переменную типа byte с именем collisionsCounter :

  • Как только вы вводите триггер - увеличивайте счетчик.
  • Как только вы выйдете из триггера - уменьшите счетчик.

Проверьте, действительно ли вы находитесь над коллайдером!

Теперь, когда вам нужно проверить, заземлен ли ваш персонаж, вы можете просто использовать

РЕДАКТИРОВАТЬ

Собственно, после того, как задал вопрос дальше, я понял, что у вас есть совершенно ненужные коллайдеры (я говорю о триггерных). Удалите те. Теперь у вас есть только один коллайдер на объект. Но чтобы получать призывы к коллизии, вам нужно изменить:

  • OnTriggerEnter2D(. ) в OnCollisionEnter2D(Collision2D)
  • OnTriggerExit2D(. ) в OnCollisionExit2D(Collision2D)

Окончательный код

Здесь могут быть незначительные опечатки, так как весь код был набран в Блокноте .

Причина, по которой у меня два коллайдера боксов, заключается в том, что если я использую только один и активирую триггер, мой персонаж проходит через него. Я действительно видел это в каком-то руководстве, и они использовали два, и он просто работал нормально, не знаю, почему он не работает на моем. есть ли у вас какие-либо другие советы, как использовать только ОДИН коллайдер коробки и сделать так, чтобы мой персонаж не провалился через него?

Совершенно нормально (не так много с точки зрения производительности), что один блок использует 2 коллайдера. Я имел в виду, что каждая из ваших платформ имеет отдельный набор коллайдеров. И когда вы переходите с одной платформы на другую, происходит то, что происходит с входом и выходом.

@EricAhn Отредактировал мой ответ для обеих задач (количество прыжков и коллайдеров)

@EricAhn Ошибка говорит о том, что вы не указали имена для аргументов Collision2D в методах. Итак, OnCollisionEnter2D (Collision2D) должен быть чем-то вроде OnCollisionEnter2D (Collision2D collisionVariableName). Просто придумайте что-нибудь более описательное для имени переменной. То же самое и с OnCollisionExit2D (. ).

Сведас Я на самом деле пытался поставить переменную, которая работала в том смысле, что я не получал никаких ошибок, но мой персонаж не прыгал. Вы случайно знаете какие-нибудь хорошие подробные руководства по прыжкам, чтобы мне не приходилось беспокоить вас этими глупыми вопросами?

Нет . прошло довольно много времени с тех пор, как я смотрел какие-либо учебники по Unity (не говоря уже о лучших практиках, советах и ​​т. Д.). Я отредактирую свой ответ, чтобы вы могли просто скопировать и вставить код .

Я думаю, здесь есть пара проблем.

Во-первых, использование Triggers для проверки такого типа столкновения, вероятно, не лучший способ продвижения вперед. Я бы предложил нет использовать триггеры, а вместо этого использовать OnCollisionEnter2D() . Triggers просто определяет, перекрывается ли пространство столкновения двух объектов друг с другом, тогда как нормальные столкновения сталкиваются друг с другом, как если бы они были двумя твердыми объектами. Если смотреть, как если бы вы пытались определить, приземлились ли вы на пол, вы не хотите проваливаться сквозь пол, как ведет себя Triggers .

Во-вторых, я бы предложил использовать AddForce вместо GetComponent ().velocity .

Ваш окончательный сценарий может выглядеть примерно так:

Под "YourPlatformTag" вы подразумеваете мать всех моих платформ? или ты имеешь ввиду имя каждого ребенка? Извините, я новичок в этом. И спасибо за подсказки, которые я даже не спрашивал (без сарказма), все подсказки помогают :)

ваш код работал как шарм, большое спасибо :) но я все еще хотел бы выяснить, почему триггерный прыжок не работает только на определенных частях той же платформы, мне, возможно, придется использовать его в будущем? (я не знаю)

Возможно, ваш персонаж сталкивается не только с платформой, но и с несколькими платформами одновременно? В своем посте вы не проверяете, с чем сталкиваетесь, в основном написано whatever we collide with, set grounded to false . Может он перепутался между двумя состояниями grounded = true и grounded = false ?

@EricAhn Мне кажется, у вас на стенах 2 коллайдера, и ваш персонаж застревает на них. Я предлагаю иметь один коллайдер для вашей стены или коллайдер на ногах ваших персонажей, который не является квадратным, возможно, круговым.

после вашего кода мне не требовалось 2 коллайдера для одной платформы, поэтому я удалил один. Итак, у меня есть 1 коллайдер для персонажа и 1 для платформы.

НАРОД, помогите! Как сделать "сложный прыжок от стены"? Я как только не пробовала, а он все в воду прыгает. . .уже нервы сдают. В гробнице Визитационе, Венеция.

Ну делается это так, как и было в подсказке:
Бежим на стену , нажимаем на пробел, взбегаем, как тока взбежали на стену , удерживаем ПКМ нажимаем на кнопку в сторону которую хотим прыгнуть.

Разбегаешься (одновременно жмешь W - пробел - правую кнопку мыши), в верхней точке бросаешь W и жми D - Эцио взбегает вверх по стене и прыгает вправо.
Ну вот как-то так.

t.me/joinchat/Ec-2PhXL8kLeKzs. - телеграм канал

Комментарии • 22

Ура! Ждал такое видео и оно вот. Спасибо большое за твои уроки. Желаю тебе 100000000 подписчиков ты лучший!

Спасибо. Просто, быстро и понятно :)

очень хорошее видео, но до сих пор не могу разобраться как привязать анимацию сальто к прыжку от стены, надеюсь будет видео с анимациями!

Здравствуйте уважаемый !
У меня к Вам два вопроса : будут ли после 32 уроков по 3D MAX ещё уроки ( очень хотелось бы ) и будете ли Вы отвечать на вопросы по прошедшим ( 32 ) урокам. Заранее благодарен за любой ответ .

@Graphical Design Спасибо Вам большое за ответ . Уверен многотысячные поклонники Ваших самых доступных , а значит самых приятных уроков будут с нетерпением ждать этого вдохновения . Ну пожалуйста , продолжите этот благородный труд , у Вас это здорово получается . И кстати , если появяться Ваши уроки как мы об этом узнаем ?

Надеюсь однажды появится ролик о посадке семян, их росте и сборе персонажем.
Хорошая графика не нужна - сойдёт белый квадрат с глазками за персонажа, и три стадии роста растения - маленький квадратик зелёного цвета, средний и большой желтого (пшеница) цвета.

Спасибо, очень хорошая информация. Но есть один вопрос. А как сделать так, чтобы и от земли он делал двойной прыжок, а то у меня ничего не получилось.

Читайте также: