Показать сообщение отдельно
Старый 24.06.2012, 20:01   #1
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Счастье Правильное ограничение угла поворота камеры

Очень неприятно, когда перс может крутить башкой на все 360 градусов по вертикали.

Камера привязана к телу. ( camera = bbCreateCamera( entity ))

Вот так обычно выглядит код, отвечающий за обзор

mxs# = MouseXSpeed() * mouse_sens ;mouse_sens - чувствительность мыши
mys# = MouseYSpeed() * mouse_sens

TurnEntity entity, 0, -mxs, 0
TurnEntity camera, mys, 0, 0
Этот код не ограничивает угол поворота камеры по вертикали.
А этот ограничивает - и очень неплохо!
mxs# = MouseXSpeed() * mouse_sens ;mouse_sens - чувствительность мыши
mys# = MouseYSpeed() * mouse_sens

if( EntityPitch( camera, 1 ) + mys > max_pitch ) ;max_pitch - максимальный угол наклона камеры, например 89 градусов
   mys = 0
end if

if( EntityPitch( camera, 1 ) + mys < -max_pitch )
   mys = 0
end if

TurnEntity entity, 0, -mxs, 0
TurnEntity camera, mys, 0, 0
Все! Теперь никаких бешеных телодвижений! Этот код не подвержен "проскакиваниям" - присущим некоторым другим реализациям
__________________

(Offline)
 
Ответить с цитированием