Показать сообщение отдельно
Старый 12.02.2011, 21:35   #4
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 113 полезных сообщений
(для 167 пользователей)
Ответ: FPS: Проблема с реализацией игрока

Давай по порядку:
Предположим, что есть лестница. Чтобы игрок по ней взбирался быстрее, т.е. выталкивался обработчиком столкновений, надо увеличить радиус "ног игрока" (scenePlayer). Однако, из-за этого игрок перестает проходить, например в двери (если деревья или обстановку в доме можно расставить по шире, то квадратные двери смотрятся нелепо).
Смотрим справку EntityRadius
EntityRadius entity,x_radius#[,y_radius#]
Параметры
entity - указатель объекта
x_radius# - радиус по оси x эллипсоида зоны столкновений
y_radius# (optional) - радиус по оси y эллипсоида зоны столкновений. Если не указано, то будет использоваться значение параметра x_radius# (будет сфера).
Простой выход: используем разную ширину и высоту (передаём два параметра)
Так же малое значение радиуса позволяет подойти близко к стене и "заглянуть" через нее (это лечится заданием небольшого значения перового параметра в CameraRange).
CameraRange лучше особенно не трогать, используй ScaleEntity sceneCamera, 0.1, 0.1, 0.1

Для гравитации сделай вертикальную скорость. Отнимай от скорости величину гравитации каждый цикл. Если игрок столкнётся с полом - скорость равна 0, для прыжка вверх один раз прибавь положительное число.
Каждый цикл используй MoveEntity scenePlayer, 0, <вертикальная скорость>, 0
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Aikon (16.02.2011)