Как сделать передвижение персонажа в unity3d

Что такое передвижение персонажа в Unity 3D и как его реализовать

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d

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

силу трения в зависимости от поверхности движения;

направление и силу ветра;

«встреч у » или столкновение с другими игровыми объектами;

влияние пуль, взрывов, природных катаклизмов;

Коэффициентов много, но суть должна быть сохранена — передвижение игрового персонажа в Unity 3D должно быть максимально реалистичным.

Передвижение персонажа в Unity 3D

Простое передвижение игрового персонажа в Unity 3D создается просто. Достаточно сделать 2 действия:

создать Plane — это территория, внутри которой игровой персонаж будет перемещаться;

создать Sphere — создать сам персонаж.

Add Component → Physics → RigidBody

Передвижение игрового персонажа в Unity 3D: особенности

Разрабатывать передвижение персонажа в Unity 3D можно в двух контекстах:

используя плавный подход, когда позиция объекта рассчитывается на основе физики;

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

Передвижение персонажа в Unity 3D может быть организовано 4 способами:

Применив физический движок — входит в разряд физического плавного движения.

Нефизическое плавное движение. Тоже не желательно использовать, но годное.

Передвижение при помощи Character Controller. Довольно сложный способ, поэтому применяется только профессионалами, молодые разработчики игр не смотрят в его сторону.

Реализовать тот или иной вид передвижения также можно по-разному: при помощи разных свойств и разных инструментов. Мы обязательно остановимся на всех реализациях передвижения подробнее в следующих статьях. Подробнее о передвижении можно прочитать в официальной документации к Unity 3D.

Заключение

Передвижение персонажей в игре на Unity 3D — это трудоемкий процесс, над которым придется немало попотеть. Современны е игроки довольно требовательны, поэтому успех имеют те игры, которые предлагают больше реалистичности. Причем реалистичность касается всего:

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Unity — Движение персонажа по вектору камеры (3D)

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3dДолго-долго откладывалась эта тема для публикации, но сейчас было накоплено уже немеренно материала, которым будет интересно поделиться. Тема этой статьи «Движение персонажа по вектору камеры» или «Движение персонажа «куда смотрит камера»». Сам очень долго искал материалы на эту тему и решил начать именно с нее, так как потратил достаточно много времени и в итоге все равно пришлось брать несколько решений и адаптировать под свои нужны. Сразу скажу, статей будет много. Это инди-проект по разработке игры. Сама по себе концепция простая, но делался он для получения опыта. Проект написан не на var-ах и хорошо прокомментирован. Хотелось сделать хорошо настолько, насколько позволяли представления о игростроении. Язык использовался — C#/C Sharp.

Движение персонажа по вектору камеры в Unity.

Для начала давайте определимся с системой. Она должна работать по следующему принципу:

Итак, что мы сделали: составили техническое задание с проработанной логикой движения и применение физики для персонажа. Прежде, чем браться за задачу — ее нужно описать. Далее — если все то, что тут написано, вам необходимо — начинаем кодить. Кстати, учтем, что персонаж должен обладать скоростью передвижения. Это важно, т.к. это отдельная переменная, участвующая в расчетах остальных формул.

Окей, свои «хотелки» мы описали. Поехали:

Теперь давайте разбираться.

Инициализируются стандартные значения, а именно:

В методе Update() проверяется значение нажатой клавиши (W,A,S,D), так же проверяется флаг проиграна ли игра и далее начинается что-то странное скажите вы… Но нет, проверяется далее значение «на земле ли персонаж». Если значение «true», то к компоненту rb (RigidBody) применяется физическая сила.

«MainCamera.transform.forward/right» — отвечает за определение вектора взгляда камеры.
«speed» — скорость.
«Time.deltaTime» — отвечает за плавность (так как все применяется не в 1/1000 секунды, а сила применяется каждую секунду, плавно и красиво.

Далее мы видим, что проставляется флаг движения, но он относится к прыжкам, которые появятся в следующей статьей. Дальше идет else, который сообщает, что делать, если физическое тело находится не на земле. Соответственно в попытках применить физическую силу на тело ничего не произойдет — потому что такова логика, вектор по нулям — rb.AddForce(0f, 0f, 0f); (Важно: это не ОФ, а ноль и латинская ЭФ)

После чего скобочки и занавес… Вешаете этот скрипт на персонажа. У вас должно в Unity Inspector (правая панель с компонентами, текстурами и т.д.) в окне со скриптом появиться 2 новых поля с названиями: Main Camera и Player. Камеру и персонажа аттачите в соответствующие поля. Далее можно проверять работоспособность кода в плеере. Можете брать этот код и адаптировать под свои нужды. В одной из следующих статей по Unity, я опишу скрипт, который заставляет камеру двигаться за спиной вашего персонажа, она будет такой второй частью или продолжением. Надеюсь, что для вас данная статейка была полезна. Буду искренне рад, если внизу увижу много фидбэка 🙂

Подписывайтесь на нашу группу в ВК и канал Youtube! Большое спасибо за внимание!

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

Источник

Как сделать передвижение персонажа в unity3d

Нажимаем «Add component>>Physics>>Rigidbody» и «Add component>>Physics>>Capsule Collider». В «Capsule Collider» Выставляем размеры нашей капсулы что бы получилось как на картинке, слегка чуть больше модельки самой.
Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d
В «Rigidbody» ставим галочку «Use gravity». Раскрываем вкладку «Constraints» и ставим все 3 галочки на «Freeze Rotation». Это нужно для того что бы наш персонаж не проваливался сквозь землю, не падал на землю если вдруг окажется на неровности и тому подобное.
Программируем персонажа на перемещение.
Создадим c# скрипт «movePlayer».

200?’200px’:»+(this.scrollHeight+5)+’px’);»> using UnityEngine;
using System.Collections;

public class movePlayer : MonoBehaviour <

private GameObject player; //Переменна объекта персонажа с которым будем работать.

public static int speed = 6; //Скорость перемещения персонажа. Запись public static обозначает что мы сможем обращаться к этой переменной из любого скрипта
public static int _speed; //постоянная скорость перемещения персонажа
public int rotation = 250; //Скорость пповорота персонажа
public int jump = 3; //Высота прыжка

//Поворачиваем персонажа. Так как наша переменная x глобальна, из скрипта камеры в неё будем записывать длину на сколько сместился указатель мыши и по оси X и относительно этого будет повернут наш персонаж
Quaternion rotate = Quaternion.Euler (0,x,0); //Создаем новую переменную типа Quaternion для задавания угла поворота
player.transform.rotation = rotate; //Поворачиваем персонаж

200?’200px’:»+(this.scrollHeight+5)+’px’);»> codeusing UnityEngine;
using System.Collections;

private float x = 0.0f; //Угол поворота по Y?
private float y = 0.0f; //Уго поворота по X?

[AddComponentMenu(«Scripts/Mouse Orbit»)] //Добавляем в меню

public void Start() <
//переворачивам углы
Vector3 angles = transform.eulerAngles;
x = angles.y;
y = angles.x;

if(rigidbody)
rigidbody.freezeRotation = true; //Если камера столкнется с физ.объектомона остановиться
>

y = ClampAngle(y,yMinLimit, yMaxLimit); //Вызыв самописной функции для ограничения углов поврот
movePlayer.x = x;
//Повернуть камеру согласно поченым данным
Quaternion rotation = Quaternion.Euler(y, x, 0);
transform.rotation = rotation;

200?’200px’:»+(this.scrollHeight+5)+’px’);»> using UnityEngine;
using System.Collections;

public class AnimatePlayer : MonoBehaviour <

Источник

Основы создания 2D персонажа в Unity 3D 4.3. Часть 2: бегущий персонаж

Всем привет. Продолжаем дело, начатое в первой части. Сейчас у нас есть платформа и стоящий на ней персонаж с анимацией покоя. Настало время научить нашего персонажа бегать вправо-влево по платформе.

Загрузим сцену из первой части. Напомню, что в прошлый раз мы импортировали несколько спрайтов в папку AssetsSprites. На всякий случай, внизу поста еще раз приведу ссылку на спрайты. Среди них должен быть спрайт под названием Run. Мы будем использовать его для создания анимации бега. Для этого нам надо проделать те же действия по превращению одиночного спрайта в коллекцию, как и при создании анимации покоя. Вкратце напомню: выделяем спрайт, в окне Inspector устанавливаем свойство Sprite Mode как Multiple, нажимаем ниже Sprite Editor, нарезаем изображение в режиме Grid или Automatic.

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d

Теперь в окне Hierarchy выбираем Character и переходим в окно Animation. Нажимаем на поле с анимацией Idle и выбираем Create New Clip, чтобы создать анимацию бега. Сохраним файл анимации в папке AssetsAnimations под именем Run.

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d

Новая созданная анимация Run стала текущей в окне Animation. Разворачиваем спрайт Run в окне Project, выделяем все фалы Run_0… Run_9 и перетаскиваем в окно Animation. Установим пока значение Sample равное 24.

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d

Все это мы уже делали в первой части, а теперь будет нечто новое. Перейдем в окно Animator. Сейчас там отображены три анимации: Any State, Idle и Run. Нам предстоит задать условия перехода из анимации Idle в анимацию Run, то есть из состояния покоя в состояние бега. В нижнем левом углу есть поле Parameters. Нажимаем на плюсик, выбираем Float и называем новый параметр как Speed. Тем самым мы создали параметр типа число с плавающей запятой, обозначающий скорость перемещения персонажа. Именно в зависимости от значения этого параметра будет происходить переключение из анимации покоя в анимацию бега. Теперь нажимаем правой кнопкой мыши на анимацию Idle, выбираем Make Transition и нажимаем левой кнопкой мыши на анимацию Run. Между анимациями появится линия со стрелкой. Передвиньте мышкой прямоугольники анимации, если плохо видно. Кликнем по линии со стрелкой. В окне Inspector отобразятся свойства перехода между анимациями. Обратим внимание на низ окна, в раздел Conditions. Кликнем на параметр Exit Time и поменяем его на Speed. Второе поле Greater оставим без изменений, а в третьем введем значение 0.01. Мы создали условие перехода из анимации покоя в анимацию бега — оно происходит, когда значение параметра скорости становится немногим больше нуля.

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d

Теперь нужно сделать обратный переход — из Run в Idle. Делаем все с точностью наоборот: Make Transition от Run к Idle, выделяем переход, в Conditions устанавливаем SpeedLess0.01.

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d

Теперь у нас есть две анимации и условия перехода между ними. Но пока ничего работать не будет, потому что все что мы сделали нужно «оживить» при помощи скрипта. Давайте перейдем в окно Project и создадим в папке Assets подпапку Scripts. Добавим в нее новый C# Script, назовем его CharacterControllerScript и откроем на редактирование.

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d

Я приведу полный листинг скрипта с подробными комментариями, а ниже еще поясню, что в нем происходит.

Итак, мы завели несколько переменных: для задания максимальной скорости перемещения, для определения направления (вправо/влево) и для работы с компонентом Animator. Почти все действия происходят в методе FixedUpdate. В нем мы получаем значение оси Х, которое меняется при нажатии на клавиатуре клавиш влево-вправо или A-D (если не меняли соответствующие настройки проекта!). Затем устанавливаем это значение параметру Speed компонента Animator. Обратите внимание, что мы берем модуль этого значения при помощи метода Mathf.Abs, так как при создании условий перехода между анимациями покоя и бега мы сравниваем значение параметра с положительным числом 0.01. Нам здесь не важно, в какую сторону бежит персонаж. Важно лишь величина значения. Далее задаем скорость перемещения по оси Х в соответствии со значением максимальной скорости. И, наконец, проверяем, в какую сторону бежит персонаж, и в какую сторону он в этот момент повернут. Если он бежит вправо, а повернут влево — разворачиваем его вправо путем инвертирования его размера по оси Х. И наоборот. Этим нехитрым способом мы избавились от необходимости делать две анимации вместо одной: для бега вправо и для бега влево.

Сохраняем скрипт. В Unity перетаскиваем его на нашего Character в окне Hierarchy. Запускаем игру, нажимаем влево-вправо или A-D.

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d

Капитан Коготь теперь умеет бегать! Скорость анимации получилась быстроватой. Ее можно снизить путем уменьшения значения Sample в окне Animation для анимации Run (значение 12 будет нормально). Если одновременно с игрой у вас видно окно Animator, то вы увидите, что во время покоя работает анимация Idle (бегает синий прогрессбар), а во время бега происходит переход на анимацию Run, и, соответственно, работает она.

На этом пока все. Нам осталось разобраться с прыжками… и узнать при этом еще несколько новых вещей!
Ссылка на спрайты.

Источник

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

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d

Привет, друзья! Давайте начнем обучение созданию игр на Unity (Юнити). Мы публикуем уроки Юнити бесплатно, чтобы вы смогли познакомиться с этой средой и узнать, как устроен язык программирования C# (Си Шарп). В этом уроке разберем как сделать управление персонажем и прыжки в 2D- и 3D-проекте.

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

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d
Создаем скрипт и даем ему название на английском языке.

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d
Управление персонажем в 2D

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

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

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

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d
Создаем скрипт на C#

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

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

Как сделать передвижение персонажа в unity3d. Смотреть фото Как сделать передвижение персонажа в unity3d. Смотреть картинку Как сделать передвижение персонажа в unity3d. Картинка про Как сделать передвижение персонажа в unity3d. Фото Как сделать передвижение персонажа в unity3d
Сохраняем скрипт и перемещаем его на персонажа. Запускаем Юнити и проверяем.

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

Источник

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

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