AndreyMust19 03 дек 2011, 13:39
В самом простом случае:
мышь -> ориентация игрока
клавиатура -> координаты
Под игроком понимается объект, к к-му будет прикреплен написанный скрипт.
На игрока также нужно нацепить компонент Character Controller, чтобы выступал физическим телом и игрок не проходил через стены.
1) Опрашиваем движения мыши по оси X и Y
2) Умножаем эти движения на Time.deltaTime
3) Поворачиваем игрока - вокруг глобальной оси Y - на значение движения по X и вокруг оси X - на значение движения по Y
4) Считываем состояния кнопок движения
5) Если нажата "вперед", умножаем transform.forward на Time.deltaTime и константу, выражающую скорость передвижения. Прибавляем полученный вектор к позиции игрока в сцене
6) Если нажата "назад" - вычитаем этот же вектор
7) Если нажата "вправо", умножаем transform.right на Time.deltaTime и константу, выражающую скорость передвижения. Прибавляем полученный вектор к позиции игрока в сцене.
8) Если нажата "влево" - вычитаем этот же вектор.
Отдыхаем
9) Добавляем функцию плавности в расчет угла поворота игрока
10) Добавляем плавность в функцию расчета скорости движения игрока (как вариант, вместо константы подставляем вычисляемое значение)
11) Уменьшаем максимальную скорость движения назад и влево/вправо относительно скорости движения вперед.
12) Добавляем прыжок и гравитацию. В качестве направления прыжка берем направление игрока в момент нажатия "прыжок"
13) Если у физического тела игрока нет контакта с землей (т. е. находится в воздухе), не считываем нажатия на кнопки перемещения
Отдыхаем.
Включаем фантазию.
В качестве старта советую взять демо SewerProject.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами