Выполнение прыжка в игре в реальном времени
Чтобы персонаж в игре прыгал, движение придется разбить на части, или сегменты, которые программист сможет запускать в зависимости от того, насколько высоко должен подпрыгнуть персонаж, как далеко он пролетит и когда ударится о землю. Прыжок не может быть одним длинным движением, иначе его нельзя будет выполнить, ведь невозможно сказать, как долго персонаж будет находиться в воздухе после толчка и как далеко он улетит, поскольку скорость и направление движения все время меняются. Прыжок в игре будет работать, только если он продуман немного по-другому и разделен на три части: прыжок (1), касание (2) и приземление (3) -рис. 7.38.
Ожидание прыжка не принимается во внимание, потому что персонаж должен мгновенно реагировать на команды игрока. Прыжок включает в себя зависание до точки, находящейся прямо перед приземлением, поэтому на самом деле представляет собой комбинацию толчка и зависания (отсюда новое название - прыжок). Кадр, находящийся прямо перед соприкосновением с землей, содержит позу касания, которую программист может удерживать столько, сколько нужно, до возникновения контакта с землей, а затем запускать анимацию приземления. Другими словами, анимация прыжка должна обеспечивать входные данные для прыжка, ожидание восстановления контакта с поверхностью и сам контакт с поверхностью.
Рис. 7.38. Чтобы выполнить последовательность прыжка, ее нужно разбить на три части
Еще одно условие выполнения прыжка - он анимируется «на месте». Это значит, что персонажи не перемещаются во время анимации, потому что в игре они перемещаются движком вертикально и горизонтально на основе кода, который зависит от команд, полученных от игрока. Также это обусловлено ограничениями габаритного контейнера и ограничениями, связанными со столкновениями. Создавая анимацию прыжка, сначала добейтесь нужного ее вида, прежде чем думать об ограничениях. Затем просто удалите вертикальные ключи для объекта СОМ и остальное предоставьте коду, когда персонаж будет в игре.
Многие персонажи игр в реальном времени окружены так называемым габаритным контейнером (bounding box), который базируется на заранее заданном размере и/или на крайних вершинах персонажа. В этом случае граничные прямоугольники можно создавать по зонам (высокие, средние и низкие) или для каждой кости в каркасной анимационной системе. Из трех подходов к созданию граничных прямоугольников первый - наименее, а последний - наиболее дорогостоящий.