unity как управлять персонажем

Character Controller

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

Свойства

Свойство:Функция:
Slope LimitОграничивает возможность коллайдер взбираться по склонам только по склонам равным или меньше чем указанное значение.
Step OffsetПерсонаж переступит на поверхность, только если она ближе к земле, чем заданное значение.
Skin width2 коллайдера могут пересечься друг с другом на глубину, равную значению Skin Width. Большее значение уменьшит степень тряски. Слишком низкое значение может вызвать застревание персонажа. Наилучшим вариантом является установление этого значения равным 10% от радиуса.
Min Move DistanceЕсли персонаж попробует сдвинуться ниже указанной величины, то он не сдвинется. Это может быть использовано, чтобы уменьшить тряску. В большинстве ситуаций это значение стоит оставить равным нулю(0).
CenterСдвиг коллайдера в мировом пространстве без влияния на то, как вращается персонаж.
RadiusЗначение радиуса коллайдера. По сути дела, это ширина коллайдера.
HeightВысота коллайдера Capsule Collider персонажа. Изменение её растянет коллайдер вдоль оси X в оба направления.

unity как управлять персонажем. Смотреть фото unity как управлять персонажем. Смотреть картинку unity как управлять персонажем. Картинка про unity как управлять персонажем. Фото unity как управлять персонажемКомпонент Character Controller

Детали

Controller не реагирует на силы сам по себе и не отталкивает Rigidbody объекты автоматически.

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

Настройка персонажа до желаемого результата

Вы можете менять значения Height и Radius для соответствия коллайдера мешу персонажа. Для человекоподобных персонажей рекомендуется использовать высоту около 2-х метров. Вы также можете изменить центр ( Center ) капсулы в случае, если точка вращения (pivot) не соответствует точному центру персонажа.

Значение Step Offset тоже важно при настройке, убедитесь, что это значение находится в диапазоне между 0.1 и 0.4 для 2-х метровых гуманоидов.

Slope Limit тоже должен быть не слишком маленьким. Зачастую использование значения в 90 градусов подходит лучше всего. Character Controller не сможет ползать по стена в виду формы капсулы.

Как не застрять

Skin Width одно из самых критических свойств для верной настройки Character Controller. Если вам персонаж застрял, то скорее всего ваше значение Skin Width слишком мало. Skin Width позволяет объектам слегка пересекать Controller, но уменьшает тряску и защищает от застревания.

Достаточно неплохой практикой является сохранение значения Skin Width как минимум больше чем 0.01 и и больше чем 10% радиуса коллайдера ( Radius ).

Мы рекомендуем оставлять значение Min Move Distance равным 0.

См. справку по скриптингу Character Controller здесь

Вы можете скачать проект-пример, демонстрирующий предустановленных анимированных и движущихся Character Controller’ов, с нашего вебсайта здесь Resources

Источник

Как работает Unity Character Controller (Контроллер Персонажа)?

Команда Unity3D заботится о рядовых пользователях и разработчиках игр. Поэтому в Unity была введена интересная система, называется она – Character Controller, а по русски – Контроллер Персонажа. Что же она делает и для чего вообще нужна? В основном она используется для управления персонажем от первого или третьего лица без использования физики Rigidbody.

unity как управлять персонажем. Смотреть фото unity как управлять персонажем. Смотреть картинку unity как управлять персонажем. Картинка про unity как управлять персонажем. Фото unity как управлять персонажемИтак для начала нам следует подготовить сцену. Создадим Terrain, Меню GameObject>3d Object>Terrain

И создадим заготовку нашего персонажа. Для этого опять, Меню GameObject>Create Empty и назовем его Player. Затем делаем нашу камеру дочерней нашему свежесозданному Player.

Теперь добавим плееру компонент Character Controller. Для этого в окне инспектора нажмем кнопку Add Component и в появившемся списке в пункте Physics нажмем на Character Controller.

Когда контроллер персонажа добавлен к нашей заготовке, рассмотрим подробнее поля его настроек.

Slope Limit: этот параметр ограничивает возможность персонажу взбираться на различные препятствия. Например, по умолчанию стоит число 45, это значит, что если угол препятствия больше 45 градусов, то персонаж на него не сможет взобраться.

Step Offset: персонаж будет подниматься по лестнице, только если он ближе к земле, чем указанное значение.

Skin width: 2 коллайдера могут пересечься друг с другом на глубину, равную значению Skin Width.

Min Move Distance: если персонаж пытается переместиться ниже указанного значения, он не будет двигаться вообще.

Center: сдвиг коллайдера контроллера.

Radius: радиус коллайдера контроллера. Определяет, насколько жирный получился персонаж.

Height: высота коллайдера. Ну и, соответственно, высота контроллера. Например, если сделать это значение выше высоты дверных проемов, то персонаж просто застрянет в них.

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

Создадим новый скрипт под названием Player. Этот скрипт нам нужен для отдачи команд CharacterController, который и будет их выполнять, двигая и поворачивая персонажа. Для этого выберем в иерархии нашего персонажа и в инспекторе нажмем Add Component. Далее, в конце появившегося списка, нажимаем New Script, в появившемся поле ввода вводим название скрипта, в нашем случае – Player.

Завершающие действие – это кнопка Create and Add. Нажимаем! Отлично, скрипт создан и добавлен к нашему персонажу!

Откроем его, кликнув по его имени два раза.

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

В этом скрипте нам надо обьявить три переменные. Первая – это ссылка на CharaсterController. Вторая – скорость движения. Третья-скорость поворота. И укажем им значения по умолчанию 1 и 3 соответственно.

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

В методе Start, который, как мы знаем, вызывается при старте сцены, добавим строку, которая найдет и добавит компонент CharacterController к нашей переменной. Конечно же, при условии, что он присутствует на том же GameObject что и наш скрипт.

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

Теперь переходим к методу Update. Этот метод вызывается каждый кадр. В него для начала добавим строку, которая поворачивает наш персонаж вокруг оси Y, посредством клавиш leftArrow и RightArrow.

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

Затем мы задаем, куда нам двигаться. Точнее – вектор направления. Он у нас forward или z.

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

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

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

И наконец, собираем все это вместе и передаем на Character Controller.

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

Сохраняем наш скрипт и переходим в Unity. На нашем персонаже должно быть два скрипта Charaster Controller и Player.

unity как управлять персонажем. Смотреть фото unity как управлять персонажем. Смотреть картинку unity как управлять персонажем. Картинка про unity как управлять персонажем. Фото unity как управлять персонажемЖмем Play и стрелочками на клавиатуре двигаем и поворачиваем нашего персонажа. Урааа, побежали!

Источник

Unity как управлять персонажем

Нажимаем «Add component>>Physics>>Rigidbody» и «Add component>>Physics>>Capsule Collider». В «Capsule Collider» Выставляем размеры нашей капсулы что бы получилось как на картинке, слегка чуть больше модельки самой.
unity как управлять персонажем. Смотреть фото unity как управлять персонажем. Смотреть картинку unity как управлять персонажем. Картинка про unity как управлять персонажем. Фото unity как управлять персонажем
В «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 <

Источник

Управление персонажем, с помощью мыши в Unity

Стандартные Asset управления в Unity имею несколько скриптов, перемещение только с помощью клавиатуры и клавиатуры и мыши, но отсутствует скрипт перемещения с использованием мыши («Diablo-style»). Скрипты будет написаны на C#.

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

public class MouseCamera : MonoBehaviour <
// Позиция объекта Target
public Transform target;
// Слой(и) которые реагируют на клик
public LayerMask mask;
// Персонаж которым управляем
public MousePerson player;
// Вектор перемещения
private Vector3 direction;
// Информация о луче
RaycastHit hit;

void Update() <
if (Input.GetMouseButtonUp(0)) <
// Получаем направление луча
Ray ray = camera.ScreenPointToRay(Input.mousePosition);
// Кидаем луч бесконечной длинны и проверяем пересечение слоев
if (Physics.Raycast(ray, out hit, Mathf.Infinity, mask)) <
// Проверяем то, что вернулось и перемещаем туда наш Target
target.position = hit.point;

// Сообщаем персонажу о новом «задание»
player.GetTarget(target.position);
>
>
>
>

Скрипт проверяет пересекает ли место клика объект(ы) указанные в слое, перемещает в это место объект цели и «говорит» персонажу двигаться к этому месту.
Скрипт персонажа немного больше, но не сильно сложнее.
using UnityEngine;

public class MousePerson : MonoBehaviour <
// Персонаж
CharacterController player;
// Радиус в котором персонаж считает что он у цели
public float radiusNoClick = 3f;
// Координаты Target
public Vector3 target = Vector3.zero;
// Вектор перемещения
private Vector3 direction;
// Скорость поворота
public float speedRotation = 10f;
// Скорость передвижения
public float speedMove = 45f;
// Маркер персонажа, на месте или нет
private bool onPlace = true;
// Анимации
private Animation _animation;
// Состояния
enum CharacterState <
Idle = 0,
Walking = 1,
>
// Состояние
private CharacterState _characterState;

void Start() <
// Получаем анимации
_animation = GetComponent();
// Получаем персонажа
player = (CharacterController)gameObject.GetComponent(typeof(CharacterController));
>

// Поворачиваемся
Quaternion look = Quaternion.LookRotation(direction);
this.transform.rotation = Quaternion.Slerp(this.transform.rotation, look, Time.deltaTime * speedRotation);

// Двигаемся
player.Move(direction * Time.deltaTime * speedMove);

// Персонаж в движении
_characterState = CharacterState.Walking;
>
else
// Персонаж в состоянии «покоя»
_characterState = CharacterState.Idle;

if (_animation) <
// Включаем нужную анимацию в зависимости от состояния
if (_characterState == CharacterState.Walking)
_animation.Play(«walk», PlayMode.StopAll);
else if (_characterState == CharacterState.Idle)
_animation.Play(«idle», PlayMode.StopAll);
>
>

public void OnPlaceTrue() <
onPlace = true;
>
>

Метод GetTarget() принимает из скрипта MouseCamera позицию цели и проверяется не находится ли он около персонажа. Если все хорошо и цель далеко, персонаж начинает движение в сторону цели, путем вычислений проводящихся в Update(). Метод OnPlaceTrue() служит для указания персонажу, что он на месте. Он используется в небольшом триггере который размещается на объект Цели.

public class TriggerOnTarget : MonoBehaviour <

public MousePerson player;

void OnTriggerEnter(Collider onPlace) <
player.OnPlaceTrue();
>
>

При пересечении зоны триггера, сообщается что персонаж прибыл в место назначения.

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

В коллайдере необходимо указать что «он» триггер, установить радиус (зависит от размеров вашего персонажа) и указать в скрипте персонажа, от которого он зависит.
У персонажа в скрипте все настройки оставлены по умолчанию, и ничего дополнительного указывать нет необходимости.
unity как управлять персонажем. Смотреть фото unity как управлять персонажем. Смотреть картинку unity как управлять персонажем. Картинка про unity как управлять персонажем. Фото unity как управлять персонажем
На камере в скрипте необходимо указать объект который выполняет роль цели, игрока которым управляет и слой который будет «ловить» клики, и по которому будет ходить персонаж. Для этой цели я завел отдельный слой Terrain и присвоил его объекту выполняющему роль земли.
Вот и все, пробуйте и экспериментируйте.

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

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

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