Unity-Небольшой туториал: дополняем FPSController
С помощью этого префаба юнити можно очень просто создать «болванку» для персонажа игрока в трехмерной игре.
Префаб First Person Controller находится в папке Standart Assets\Prefabs Этот компонент содержит: Character Controller – компонент, используемый в играх от третьего и первого лица. На этот компонент не действуют команды rigidbody-физики. * Height - высота капсульного коллайдера. * Radius - можно сказать, что это ширина коллайдера. * Slope Limit – здесь указывается наклон, на который сможет передвигаться коллайдер. * Step Offset – коллайдер сможет подняться на следующую ступень, только если она ближе к земле чем значение этой переменной. * Min Move Distance – если персонаж передвинулся на меньшее значение, чем в этой переменной, он не сдвинется с места. Чаще всего используется, чтобы уменьшить дрожание. * Skin width – два коллайдера могут проходить сквозь друг друга настолько, насколько равна эта переменная. Большое значение уменьшает дрожание, маленькое может привести к тому, что коллайдер будет застревать. * Center – центровка капсульного коллайдера. MouseLook – скрипт, с помощью которого направление камеры зависит от движения курсора мыши. FPSWalker - скрипт, который отвечает за передвижение персонажа. * Speed - скорость передвижения персонажа. * JumpSpeed - высота прыжка персонажа. * Gravity - гравитация, которая действует только на персонаж во время прыжка. Для удобного доступа к переменным скрипта FPSWalker, я создаю управляющий скрипт (scr_player_status)(JavaScript) Код:
var fps_walker; Теперь с помощью переменной fps_walker мы можем получить доступ к скорости, мощности прыжка и гравитации. st_moving – переменная-флаг. Чтобы продемонстрировать работу со скоростью, реализуем «уставание» – во время бега переменная, отвечающая за энергию, уменьшается. Низкая энергия приводит к низкой скорости. Вверху скрипта выразим две переменные Код:
var st_energy = 100.0; Теперь сделаем так, чтобы во время передвижения, персонаж терял очки энергии. Мы не будем изменять FPSWalker, и реализуем это все в scr_player_status. Код:
function Update () { Нам нужно показывать количество очков энергии, поэтому добавим в наш скрипт функцию OnGUI() Код:
function OnGUI () { Код:
if (st_energy < 40) Код:
if (st_energy > st_energy_max) Код:
if (st_moving == 0) Код:
var st_energy = 100.0; |
Ответ: Unity-Небольшой туториал: дополняем FPSController
Круто! Спасибо!
|
Ответ: Unity-Небольшой туториал: дополняем FPSController
Опять мышь не блокируется!?
|
Ответ: Unity-Небольшой туториал: дополняем FPSController
А как же Time.deltaTime?
Без него же энергия будет очень медленно восстанавливаться, если игра жутко тормозит, и наоборот - очень быстро, если игра "летает". Думаю, такую штуку: st_energy = st_energy - 0.15; лучше заменить на, допустим: st_energy = st_energy - 0.25*Time.deltaTime; |
Ответ: Unity-Небольшой туториал: дополняем FPSController
Да, совсем забыл о дельтатайме, когда писал тутор.
Но вообще, тутор уже устарел, так как в 3 Unity добавили улучшенную версию фпс-вокера |
Часовой пояс GMT +4, время: 17:19. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot