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

Обновлено: 11.05.2024

Простой 2D платформер на Unity (2019.4.13f1) - 4 часть

В данном посте я напишу менеджер анимаций персонажа, и научу его прыгать и падать.

Пишем менеджер анимаций

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

animatorComponent.SetInteger("state", 1)

Мы договорились, что при значении 1 мы прогрываем анимацию бега, при 0 персонаж находится в состоянии спокойствия.

Использование enum (перечисление) - самое то для нашей задачи.

Кратко объясню, как enum работает.

При помощи ключевого слова enum создаётся список. В котором, по-умолчанию, элементы нумеруются от нуля.

// 0 1 2 3 enum Colors< blue, white, black, white >;

Однако, мы можем задать и другое значение, если хотим. Например, как в коде ниже.

using System; public class Program < enum List< zero, one, two, three, magicNumber = 42>; public static void Main() < List zero = List.zero; // Преобразование List.zero в int (целое число) int zeroNumber = (int)List.zero; List three = List.three; int threeNumber = (int)List.three; List magicNumber = List.magicNumber; Console.WriteLine(zero); // Output: zero Console.WriteLine(zeroNumber); // Output: 0 Console.WriteLine(three); // Output: three Console.WriteLine(threeNumber); // Output: 3 Console.WriteLine(magicNumber); // Output: magicNumber Console.WriteLine((int)magicNumber); // Output: 42 >>

В нём я задал значение 42 для magicNumber, то есть при преобразовании magicNumber в int, результатом будет 42.

Используем enum для нашего менеджера анимаций.

Для этого создадим новый список AnimationState в PlayerBehaviour.

// 0 1 2 3 private enum AnimationState < idle, running, jumping, falling >; // Значением по-умолчанию ставим idle (0), как мы и задавали в аниматоре private AnimationState currentAnimationState = AnimationState.idle;

После этого можно обновить метод updatePlayerPosition + создадим метод setAnimationState, который и будет выбирать текущую анимацию.

Проверим, не поломали ли чего.

Все работает, ничего не поломано =)

Добавляем анимации прыжка и падения

Находим нужные нам спрайты по пути Assets/BayatGames/Free Platform Game Assets/Character/Character Animation ( Update 1.8 )/Jump/1x.jpg

Нарезаем, как делали это ранее.

Создаём анимации jump и fall, затем перетаскиваем их на игрока, чтобы они у нему привязались.

Не забудем проставить для обеих анимаций чекбокс на Loop Time.

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

Анимации созданы, переходим в Animator.

Создаём связи, как на скрине ниже.

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

Теперь проставляем условия для каждой связи.

  • 0 - idle
  • 1 - run
  • 2 - jump
  • 3 - fall
  • idle => run , если state Equals 1 (проставляли в прошлой части)
  • run => idle, если state Equals 0 (проставляли в прошлой части)
  • run => jump, если state Equals 2
  • jump => run, если state Equals 1
  • idle => jump, если state Equals 2
  • jump => idle, если state Equals 0
  • jump => fall, если state Equals 3
  • fall=> idle, если state Equals 0

Теперь зададим доп условия для новых значений в методе setAnimationState из скрипта PlayerBehaviour.

Проверяем работу скрипта.

Похоже, всё в порядке, анимации работают.

В следующий раз попробуем добавить сбор предметов и выведение счёта.

Полный код

PlayerBehaviour

CameraBehaviour (в этой части не изменялся)

using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraBehaviour : MonoBehaviour < // Добавляем объект, за которым будет двигаться камера [Header("GameObject")] // Пишу с нижним подчеркиванием, так gameObject - ключевое слово Unity. // а придумывать новое название переменной мне влом (сорян) public Transform _gameObject; [Header("Camera position restrictions")] public float minY; public float maxY; public float minX; public float maxX; void Update() < UpdateCameraPosition(); >// Изменяем позицию камеры на экране void UpdateCameraPosition() < try < transform.position = new Vector3( // Положение игрового объекта, за которым мы двигаемся Mathf.Clamp(_gameObject.position.x, minX, maxX), Mathf.Clamp(_gameObject.position.y, minY, maxY), // Положение камеры z должно оставать неизменным transform.position.z // (если камеры куда-то проваливается, заменить на, например, -10) ); >catch (Exception error) < // Ловим ошибку, если по каким то причинам код не может быть выполнен (например, забыли подставить объект в _gameObject) Debug.LogError(error); >> > Показать ещё 11 комментариев Популярные По порядку Написать комментарий.

public float minY;

>public float maxY;
>public float minX;
>public float maxX;
Почему бы не создать два private вектора?

Как реализовать прилипание к потолку и стенам и прыжки от них в проивоположную сторону в Unity?

Делаю Аркаду, в Unity, где персонаж может прыгать со стены на стену, и с потолка на пол! Мне с помощью урока по гравитации удалось, его заставить на пробел прыгать с потолка на пол и обратно, но как реализовть чтобы это происходило по кнопкам (стрелки или W,S,A,D, и как сделать чтобы он также прыгал со стены на стену, прямо а не под углом? Вот как примерно должно быть!

А вот как сейчас!

Вот код! С помощью которого прыгает с потолка по пол и обратно!

Надеюсь на вашу помощь! Искал и в Yandex и Google и на русском и на английском, но находит все не то.

Основы создания 2D персонажа в Unity 3D 4.3. Часть 3: прыжки (и падения)

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

Наша цель звучит просто, но в ее реализации будут некоторые тонкости. Во-первых, нам надо как-то определить, что персонаж находится в состоянии прыжка. Это будет немного сложнее, чем определение состояния бега. Во-вторых, нужно прикрутить соответствующую анимацию. Здесь мы могли бы поступить аналогично анимациям покоя и бега — циклично воспроизводить соответствующие кадры анимации, пока персонаж находится в состоянии прыжка. Но мы реализуем более гибкий вариант. Состояние прыжка на самом деле состоит из двух состояний: взлет и свободное падение. Кроме того, бывают частные случаи — только взлет и только падение. Если мы прикрутим одну общую анимацию для этих двух состояний (например, поджатые ноги и развевающийся на ветру плащ) — это может выглядеть нормально, но не совсем реалистично. В реальности, когда человек прыгает, положение его тела, рук, ног отличается при взлете и при падении. Мы создадим такую анимацию, которая будет учитывать скорость взлета/падения и в зависимости от нее переключать соответствующий кадр анимации.

Загрузим наш проект и сцену. В папке AssetsSprites у нас остался последний неиспользованный спрайт Jump. Проделаем с ним уже знакомую операцию по нарезке спрайта на коллекцию изображений. Затем в окне Hierarchy выберем Character и перейдем в окно Animation. Для прыжка нам понадобиться несколько файлов анимаций, а точнее — семь. Это равно числу кадров в спрайте Jump. Давайте создадим эти анимации, называя их Jump1, Jump2 и т.д.


Теперь добавим в каждую анимацию по одному изображению из спрайта Jump, по порядку: спрайт Jump_0 в анимацию Jump1, спрайт Jump_1 в анимацию Jump2


В окне Animator (не Animation!) у нас автоматически создались элементы для новых анимаций, но они нам теперь не понадобятся. Выделим их и удалим клавишей Delete (анимации также удалятся из соответствующего списка в окне Animation, но чуть позже мы их вернем). Создадим в Animator'е два новых параметра: Ground с типом Bool и vSpeed с типом Float. Первый будет обозначать, находится ли персонаж на земле или в прыжке, а второй будет хранить текущее значение скорости персонажа по оси Y, то есть скорость взлета/падения. В зависимости от нее мы будем применять соответствующую анимацию из наших семи анимаций прыжка.


Теперь кликнем правой кнопкой по любому свободному месту в окне Animator и выберем Create StateFrom New Blend Tree. В окне Inspector переименуем созданный элемент как Jump.


Создадим два перехода между анимациями: Any State -> Jump и Jump -> Idle. То есть, из любого состояния мы можем перейти в состояние прыжка, а из состояния прыжка перейти в состояние покоя. Напоминаю, как делаются переходы: клик правой кнопкой по первой анимации, Make Transition, клик левой кнопкой по второй анимации. Для первого перехода зададим условие Groundfalse, для второго Groundtrue.


Теперь кликнем дважды по Jump. Откроется элемент Blend Tree. В него мы добавим наши семь анимаций прыжка, а переключение между ними будут происходить в зависимости от значения параметра vSpeed. По умолчанию в Blend Tree сейчас установлен параметр Speed — поменяем его на vSpeed в окне Inspector.


В этом же окне нажмем на плюсик и выберем Add Motion Field. Это нужно проделать семь раз. Создадутся семь полей для наших семи анимаций. Снимем флаг Automate Thresholds, чтобы можно было вручную устанавливать значения параметра vSpeed, при достижении которых будет производиться смена анимации в Blend Tree. Перетащим в каждое поле по анимации и зададим значения vSpeed. Вот что должно получиться (кстати, после этих действий удаленные из списка в окне Animation анимации Jump1-Jump6 вновь появятся):


С анимацией пока закончим. Теперь нам надо научится определять, когда персонаж находится на земле, а когда — в воздухе, то есть в прыжке. Перейдем в окно Scene. Создадим пустой игровой объект, назовем его GroundCheck. Выделяем его в окне Hierarchy и перетаскиваем мышью на Character (все в том же окне Hierarchy!). Теперь объект GroundCheck будет дочерним по отношению к Character и будет перемещаться вместе с ним, а объект Character приобретет соответствующую стрелку, скрывающую дочерние объекты. Кликнем по стрелке и вновь выберем объект GroundCheck. Назначим ему иконку, чтобы видеть объект на сцене. На скриншоте я указал, как это сделать:


В окне Scene переместим GroundCheck в ноги персонажа. Тем самым, мы сделали объект, который будет использован для определения нахождения персонажа на земле.


Теперь нам надо определить, а что же является землей? Очевидно, это наша платформа, но игра об этом пока не знает. Кстати, давайте создадим копию платформы для тестирования прыжка (лучшим способ будет создание префаба на основе платформы, но сейчас давайте просто выделим Platform и нажмем Ctrl+D). Разместим вторую платформу правее и выше первой.


Выделим любую из платформ и обратим внимание на верхнюю часть окна Inspector. Там есть поле Layer со значение Default. Оно обозначает принадлежность объекта к тому или иному слою. Кликнем на Default, выберем Add Layer, зададим в поле User Layer 8 имя Ground. Снова выделим платформу, и вместо слоя Default установим слой Ground. Для второй платформы тоже установим слой Ground.


Таким образом мы определили, что наши платформы будут землей. Объект GroundCheck будет проверяться на предмет пересечения с объектами слоя Ground, т.е. с нашими платформами. Если будет обнаружено пересечение — персонаж находится на земле. Делаться это будет в скрипте CharacterControlleScript, созданном в предыдущей части. Давайте откроем его на редактирование.


А в начало метода FixedUpdate следующие строки:


Теперь добавим в скрипт метод Update, в котором будем обрабатывать нажатие клавиши прыжка. Мы будем делать это в методе Update для большей точности управления — этот метод вызывается каждый фрейм игры, в отличии от FixedUpdate, который вызывается через одинаковое определенное время и обычно, при хорошем FPS, вызовы происходят реже вызовов Update.


Итого, полностью скрипт будет выглядеть так:

CharacterControllerScript

Сохраняем скрипт, возвращаемся в Unity. В Hierarchy выделяем Character. Перетаскиваем объект GroundCheck в поле Ground Check скрипта CharacterControllerScript, а в поле What Is Ground устанавливаем Ground.


Итак, в нашем скрипте, в методе FixedUpdate проверяется пересечение объекта GroundCheck с объектами, принадлежащими слою Ground. Это достигается при помощи метода Physics2D.OverlapCircle. В аргументах этого метода также задан радиус определения пересечения. Затем, в переменную аниматора Ground устанавливается результат определения нахождения на земле, а в переменную vSpeed — текущая скорость персонажа по оси Y. В зависимости от этой скорости применяется та или иная анимация прыжка из семи анимаций в Blend Tree. Сам прыжок задается в методе Update при нажатии на пробел, путем придания вертикальной силы компоненту Rigidbody2D.
Прежде чем запускать игру давайте немного изменим значение гравитации, а то скорость прыжков получится медленной, как на Луне. Заходим в меню EditProject SettingsPhysics 2D. В окне Inspector устанавливаем значение Gravity Y = -30. Запускаем игру! Если все сделано правильно, увидим примерно следующее:

Капитан Коготь умеет бегать и прыгать. При прыжке, в зависимости от состояния (взлет/падение) и от скорости применяется соответствующая анимация. На видео хорошо заметно, что при прыжке в окне Animator происходят переключения между анимациями в элементе Blend Tree. При этом, если персонаж просто падает с платформы (т.е. в прыжке нету фазы взлета, пробел не нажимался) — работают только те анимации, для переключения которых заданы отрицательные значения скорости, что делает поведение персонажа более реалистичным. Конечно, для лучшего эффекта необходимо больше анимаций и более тонкая настройка значений скорости.

Что ж, на этом все. Основа для 2D персонажа создана. Какие к ней прикрутить дополнительные возможности — зависит уже от конкретной игры. Спасибо за внимание!

Unity, 2D: как сделать прыжок?

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

Решения вопроса 1 Unity3D developer

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

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

Основы создания 2D персонажа в Unity 3D 4.3. Часть 3: прыжки (и падения)

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

Наша цель звучит просто, но в ее реализации будут некоторые тонкости. Во-первых, нам надо как-то определить, что персонаж находится в состоянии прыжка. Это будет немного сложнее, чем определение состояния бега. Во-вторых, нужно прикрутить соответствующую анимацию. Здесь мы могли бы поступить аналогично анимациям покоя и бега — циклично воспроизводить соответствующие кадры анимации, пока персонаж находится в состоянии прыжка. Но мы реализуем более гибкий вариант. Состояние прыжка на самом деле состоит из двух состояний: взлет и свободное падение. Кроме того, бывают частные случаи — только взлет и только падение. Если мы прикрутим одну общую анимацию для этих двух состояний (например, поджатые ноги и развевающийся на ветру плащ) — это может выглядеть нормально, но не совсем реалистично. В реальности, когда человек прыгает, положение его тела, рук, ног отличается при взлете и при падении. Мы создадим такую анимацию, которая будет учитывать скорость взлета/падения и в зависимости от нее переключать соответствующий кадр анимации.

Загрузим наш проект и сцену. В папке AssetsSprites у нас остался последний неиспользованный спрайт Jump. Проделаем с ним уже знакомую операцию по нарезке спрайта на коллекцию изображений. Затем в окне Hierarchy выберем Character и перейдем в окно Animation. Для прыжка нам понадобиться несколько файлов анимаций, а точнее — семь. Это равно числу кадров в спрайте Jump. Давайте создадим эти анимации, называя их Jump1, Jump2 и т.д.


Теперь добавим в каждую анимацию по одному изображению из спрайта Jump, по порядку: спрайт Jump_0 в анимацию Jump1, спрайт Jump_1 в анимацию Jump2


В окне Animator (не Animation!) у нас автоматически создались элементы для новых анимаций, но они нам теперь не понадобятся. Выделим их и удалим клавишей Delete (анимации также удалятся из соответствующего списка в окне Animation, но чуть позже мы их вернем). Создадим в Animator'е два новых параметра: Ground с типом Bool и vSpeed с типом Float. Первый будет обозначать, находится ли персонаж на земле или в прыжке, а второй будет хранить текущее значение скорости персонажа по оси Y, то есть скорость взлета/падения. В зависимости от нее мы будем применять соответствующую анимацию из наших семи анимаций прыжка.


Теперь кликнем правой кнопкой по любому свободному месту в окне Animator и выберем Create StateFrom New Blend Tree. В окне Inspector переименуем созданный элемент как Jump.


Создадим два перехода между анимациями: Any State -> Jump и Jump -> Idle. То есть, из любого состояния мы можем перейти в состояние прыжка, а из состояния прыжка перейти в состояние покоя. Напоминаю, как делаются переходы: клик правой кнопкой по первой анимации, Make Transition, клик левой кнопкой по второй анимации. Для первого перехода зададим условие Groundfalse, для второго Groundtrue.


Теперь кликнем дважды по Jump. Откроется элемент Blend Tree. В него мы добавим наши семь анимаций прыжка, а переключение между ними будут происходить в зависимости от значения параметра vSpeed. По умолчанию в Blend Tree сейчас установлен параметр Speed — поменяем его на vSpeed в окне Inspector.


В этом же окне нажмем на плюсик и выберем Add Motion Field. Это нужно проделать семь раз. Создадутся семь полей для наших семи анимаций. Снимем флаг Automate Thresholds, чтобы можно было вручную устанавливать значения параметра vSpeed, при достижении которых будет производиться смена анимации в Blend Tree. Перетащим в каждое поле по анимации и зададим значения vSpeed. Вот что должно получиться (кстати, после этих действий удаленные из списка в окне Animation анимации Jump1-Jump6 вновь появятся):


С анимацией пока закончим. Теперь нам надо научится определять, когда персонаж находится на земле, а когда — в воздухе, то есть в прыжке. Перейдем в окно Scene. Создадим пустой игровой объект, назовем его GroundCheck. Выделяем его в окне Hierarchy и перетаскиваем мышью на Character (все в том же окне Hierarchy!). Теперь объект GroundCheck будет дочерним по отношению к Character и будет перемещаться вместе с ним, а объект Character приобретет соответствующую стрелку, скрывающую дочерние объекты. Кликнем по стрелке и вновь выберем объект GroundCheck. Назначим ему иконку, чтобы видеть объект на сцене. На скриншоте я указал, как это сделать:


В окне Scene переместим GroundCheck в ноги персонажа. Тем самым, мы сделали объект, который будет использован для определения нахождения персонажа на земле.


Теперь нам надо определить, а что же является землей? Очевидно, это наша платформа, но игра об этом пока не знает. Кстати, давайте создадим копию платформы для тестирования прыжка (лучшим способ будет создание префаба на основе платформы, но сейчас давайте просто выделим Platform и нажмем Ctrl+D). Разместим вторую платформу правее и выше первой.


Выделим любую из платформ и обратим внимание на верхнюю часть окна Inspector. Там есть поле Layer со значение Default. Оно обозначает принадлежность объекта к тому или иному слою. Кликнем на Default, выберем Add Layer, зададим в поле User Layer 8 имя Ground. Снова выделим платформу, и вместо слоя Default установим слой Ground. Для второй платформы тоже установим слой Ground.


Таким образом мы определили, что наши платформы будут землей. Объект GroundCheck будет проверяться на предмет пересечения с объектами слоя Ground, т.е. с нашими платформами. Если будет обнаружено пересечение — персонаж находится на земле. Делаться это будет в скрипте CharacterControlleScript, созданном в предыдущей части. Давайте откроем его на редактирование.


А в начало метода FixedUpdate следующие строки:


Теперь добавим в скрипт метод Update, в котором будем обрабатывать нажатие клавиши прыжка. Мы будем делать это в методе Update для большей точности управления — этот метод вызывается каждый фрейм игры, в отличии от FixedUpdate, который вызывается через одинаковое определенное время и обычно, при хорошем FPS, вызовы происходят реже вызовов Update.


Итого, полностью скрипт будет выглядеть так:

CharacterControllerScript

Сохраняем скрипт, возвращаемся в Unity. В Hierarchy выделяем Character. Перетаскиваем объект GroundCheck в поле Ground Check скрипта CharacterControllerScript, а в поле What Is Ground устанавливаем Ground.


Итак, в нашем скрипте, в методе FixedUpdate проверяется пересечение объекта GroundCheck с объектами, принадлежащими слою Ground. Это достигается при помощи метода Physics2D.OverlapCircle. В аргументах этого метода также задан радиус определения пересечения. Затем, в переменную аниматора Ground устанавливается результат определения нахождения на земле, а в переменную vSpeed — текущая скорость персонажа по оси Y. В зависимости от этой скорости применяется та или иная анимация прыжка из семи анимаций в Blend Tree. Сам прыжок задается в методе Update при нажатии на пробел, путем придания вертикальной силы компоненту Rigidbody2D.
Прежде чем запускать игру давайте немного изменим значение гравитации, а то скорость прыжков получится медленной, как на Луне. Заходим в меню EditProject SettingsPhysics 2D. В окне Inspector устанавливаем значение Gravity Y = -30. Запускаем игру! Если все сделано правильно, увидим примерно следующее:

Капитан Коготь умеет бегать и прыгать. При прыжке, в зависимости от состояния (взлет/падение) и от скорости применяется соответствующая анимация. На видео хорошо заметно, что при прыжке в окне Animator происходят переключения между анимациями в элементе Blend Tree. При этом, если персонаж просто падает с платформы (т.е. в прыжке нету фазы взлета, пробел не нажимался) — работают только те анимации, для переключения которых заданы отрицательные значения скорости, что делает поведение персонажа более реалистичным. Конечно, для лучшего эффекта необходимо больше анимаций и более тонкая настройка значений скорости.

Что ж, на этом все. Основа для 2D персонажа создана. Какие к ней прикрутить дополнительные возможности — зависит уже от конкретной игры. Спасибо за внимание!

Прыжок в 2d платформере

Помощь в написании контрольных, курсовых и дипломных работ здесь.

94731 / 64177 / 26122 Ответы с готовыми решениями:

Как сделать плавный прыжок в 2d платформере?
Я создал персонажа на основе этого урока и при прыжке он резко перемещается в верхнюю точку. .


Таблица содержит результаты спортивных соревнований: Ф.И.О., время на 100 м, время на 1 км, прыжок в высоту, прыжок в длину. Составить массив записей
Таблица содержит результаты спортивных соревнований: Ф.И.О., время на 100 м, время на 1 км, прыжок.

Смерть в 2D платформере
&quot;Пишу&quot; 2D платформер по одной статье 2014 года. Столкнулся с проблемой смерти персонажа при.

Как сделать плавный прыжок в 2d платформере?

Помощь в написании контрольных, курсовых и дипломных работ здесь.

94731 / 64177 / 26122 Ответы с готовыми решениями:

Как сделать плавный прыжок?
Как сделать плавный прыжок не используя RigitBody?Сейчас персонаж просто телепортируется вверх.

Прыжок в 2d платформере
Помогите пожалуйста, реализовал движения спрайта по поверхности влево и вправо, а вот с прыжком.

Как сделать плавный прыжок?
Нужно,чтобы персонаж только поднимался и опускался. Я попробовал сделать так: if (key=VK_UP) then.

Не знаю из-за чего, но у меня стал прыгать нормально

Добавлено через 22 часа 28 минут
Я понял из за чего это происходит! Кому интересно вот причина:
Это код, который находился в Update и отвечал за горизонтальное передвижение

Он выполнялся всегда, даже когда персонаж был в воздухе и из-за него он медленно опускался и резко подскакивал вверх. Теперь придётся искать другой способ контролировать его горизонтальное положение в воздухе. 445 / 391 / 151 Вы напишите весь код скрипта, тогда вам помогут. А так по отрывкам трудно понимать, что там происходит. Уже разобрался, не надо Можешь поделиться как пофиксил? Так же начинаю изучать юнити и столкнулся с такой же роблемой. Буду очень благодарен Я наконец то понял!!
Передвижения вправо и в лево нужно програмировать вот так:
rb.velocity = new Vector2(X*Horisontalspeed,rb.velocity.y);
И потом прыжки будут в норме.
Horisontalspeed - єто скорость, rb - єто Rigidbody2D 74 / 52 / 25 Тебе потребовалось 3 года, чтобы это понять ? Нет 3 пива, молитва богу)) молитва богу)) Это часто помогает)
Меню пользователя 1max1
А что такое "X" в параметре вектора? xxxAgnosticKxxx, X это ввод игрока. Добавлено через 1 минуту
Если персонаж будет зеркально бегать, например нажимаешь в право а он бежит в лево, просто умнож результат на -1 87844 / 49110 / 22898

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Плавный прыжок
uses GraphABC; uses Timers; var Player : array of Picture; var ForFon : array of Picture; var.


Как сделать смерть персонажа в 2D платформере?
В моём платформере есть отдельно канвас с панелью жизней. Всё работает хорошо, сердечки уменьшаются.


Как сделать прыжок
Всем привет, как сделать плавный прыжок, чтобы персонаж плавно прыгал?)

Как сделать прыжок
Как сделать прыжок спрайта в python в модуле pygame. Заранее спасибо import pygame __author__ =.

Прыжок от стены в противоположную сторону

Здравствуйте, прошу помощи. Есть задумка в виде вертикальной игры, наподобе Ninjump - где герой прыгает от стены на стену.
Проблема вот в чем, т.к у меня игрок управляется только клавишей прыжка, как развернуть игрока по оси x при нажатии Space? При том что размер героя у меня (0.2, 0.2). При использовании Local.Scale (-1,1) ГГ увеличивается до этого размера, при изменении на 0,2 проблема с преобразованием double в float.
И работает прыжок только от одной стены, от противоположной не срабатывает. Прошу у вас помощи.

Добавлено через 1 час 32 минуты
С разворотом игрока разобрался. Как обозначить правую стену, чтобы добавить AddForce в противоположную сторону?

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы ( 1 ) 94731 / 64177 / 26122 Ответы с готовыми решениями:

Сила в противоположную сторону от столкновения
Хочу осуществить что-то типо откидывания при получении урона.Например,у меня есть игрок,который.

Как сортировать массив в противоположную сторону от большего к меньшему
Вот я сделала положительный, от 0 до большего. А как сделать наоборот ? protected static.

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

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

Как научить персонажа двигаться в Unity 2D и 3D


Управление персонажем в 3D

  • Plane — это территория, по которой будет перемещаться наш персонаж.
  • Sphere — объект персонажа.



Создаем скрипт и даем ему название на английском языке.

  • movementSpeed — скорость передвижения.
  • turningSpeed — скорость поворота.
  • vertical — движение по вертикали.
  • horizontal — движение по горизонтали.



Управление персонажем в 2D

Для работы потребуется два спрайта — для персонажа и для земли. Перемещаем персонажа и землю на сцену. С помощью клавиш CTRL+D дублируем землю.



Создаем пустой объект. И в него перемещаем все объекты земли.



На пустой объект добавляем коллайдер. Add Component - Physics2D - BoxCollider. И с помощью инструмента Edit Collider настраиваем размеры.



Персонажу добавляем физику и коллайдер и так же настраиваем границы коллайдера.

  • maxSpeed — скорость персонажа
  • flipRight — направление спрайта персонажа.

Теперь отражаем наш спрайт в зависимости от того, в какую сторону движется наш персонаж. Условием If проверяем. Если нажали клавишу для перемещения вправо, а персонаж направлен влево, то поворачиваем спрайт вправо. С else if — обратная ситуация.

И теперь сама функция Flip. В ней мы отражаем спрайт по оси X и задаем размеры, чтобы из-за отражения не исказились размеры спрайта.

В школе “Пиксель” мы ведем полный курс обучения Unity 3D для детей и подростков. Изучая наши уроки Си Шарп, вы быстро освоите азы программирования и научитесь создавать свои игры.

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