Организовать передвижение игрового персонажа в игре на Unity 3D — непростая задача. Вернее, в простых играх с несколькими игровыми объектами и одним главным персонажем делается все достаточно легко. Нужно только знать, как управлять персонажем, и несколько основных моментов.
В играх посложнее над этой задачей придется потрудиться, потому что во внимание нужно брать дополнительные коэффициенты, определяющие движение. Например:
силу трения в зависимости от поверхности движения;
направление и силу ветра;
«встречу» или столкновение с другими игровыми объектами;
ранения;
влияние пуль, взрывов, природных катаклизмов;
и др.
Коэффициентов много, но суть должна быть сохранена — передвижение игрового персонажа в Unity 3D должно быть максимально реалистичным.
Передвижение персонажа в Unity 3D
Простое передвижение игрового персонажа в Unity 3D создается просто. Достаточно сделать 2 действия:
создать Plane — это территория, внутри которой игровой персонаж будет перемещаться;
создать Sphere — создать сам персонаж.
Далее на персонажа «навешивается» физика, и он начинает двигаться. Чтобы «навесить» физику на персонажа, нужно пройти по следующему пути в Инспекторе:
Add Component → Physics → RigidBody
По этому пути создается скрипт передвижения игрового персонажа на С#. На словах все выглядит просто. И это действительно легко, когда дело касается простого передвижения объекта на экране. Но когда дело доходит до более сложной физики, тогда важно знать некоторые нюансы этого процесса, иначе ничего не получится.
Передвижение игрового персонажа в Unity 3D: особенности
На каждого персонажа в игре, который должен передвигаться, должен быть навешен RigidBody. Это скрипт, который отвечает за физику персонажа в игре, поэтому в нем прописываются все свойства, влияющие на передвижение. Например:
сила притяжения,
сила трения,
погодные условия,
состояние здоровья,
и др.
Разрабатывать передвижение персонажа в Unity 3D можно в двух контекстах:
нефизическое движение;
физическое движение.
Принципиально важно всегда применять физическое движение, а нефизическое оставлять для исключительных случаев. Нефизическое движение в дальнейшем вызывает множество дополнительных проблем. Помимо такого разделения, передвижение персонажа может быть еще по-разному организовано:
используя плавный подход, когда позиция объекта рассчитывается на основе физики;
используя телепортацию, когда позиция объекта рассчитывается на основе промежутков времени.
Передвижение персонажа в Unity 3D может быть организовано 4 способами:
Применив физический движок — входит в разряд физического плавного движения.
Нефизическое движение, используя телепортацию. Это проблемный подход, который потом «вылазит боком». Например, персонаж проходит сквозь стену, персонаж «трясется» возле какого-то объекта, оружие не наносит урон персонажу и др.
Нефизическое плавное движение. Тоже нежелательно использовать, но годное.
Передвижение при помощи Character Controller. Довольно сложный способ, поэтому применяется только профессионалами, молодые разработчики игр не смотрят в его сторону.
Реализовать тот или иной вид передвижения также можно по-разному: при помощи разных свойств и разных инструментов. Мы обязательно остановимся на всех реализациях передвижения подробнее в следующих статьях. Подробнее о передвижении можно прочитать в официальной документации к Unity 3D.
Заключение
Передвижение персонажей в игре на Unity 3D — это трудоемкий процесс, над которым придется немало попотеть. Современные игроки довольно требовательны, поэтому успех имеют те игры, которые предлагают больше реалистичности. Причем реалистичность касается всего:
графики,
физики,
звука.
Создать качественную компьютерную игру — задача, которая решается не за одну-две недели, а за месяцы, но чаще всего даже годы упорного программистского труда.

Другое