Ограничение наклона камеры в FPS
Как ограничить X-наклон камеры в FPS?
Пробовал так - u#=80 If Abs(EntityPitch#(CAM))=>u# RotateEntity CAM,u#*Sgn(EntityPitch#(CAM)),0,0 Но камера часто уходит в недопустимый диапазон и все переворачивается вверх ногами. И так пробовал - результат получше, но все-равно частенько не работет. If EntityPitch#(Cam)>80 Then RotateEntity CAM,79.9,0,0 If EntityPitch#(Cam)<-80 Then RotateEntity CAM,-79.9,0,0 А есть ли какой-нибудь готовый алгоритм, который бы работал без сбоев? |
Re: Ограничение наклона камеры в FPS
Что, никто не знает?
|
Re: Ограничение наклона камеры в FPS
ИМХО метод дубовый, но попробуй так:
Код:
TurnEntity player,0,Float(-MouseXSpeed()*camspeed),0,True |
Re: Ограничение наклона камеры в FPS
Тебе должно фатить этого...
TurnEntity Player,0,-MouseXSpeed()/2,0 TurnEntity cam,MouseYSpeed()/2,0,0 MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5 If Abs(EntityPitch#(cam))>80 RotateEntity cam,80*Sgn(EntityPitch#(cam)),0,0 У меня стоит так вроде....работает без глюков Хотя может я и ошибаюсь... |
Re: Ограничение наклона камеры в FPS
ЖЖоте :)
Код:
CamYaw# = CamYaw + MouseXSpeed() * MouseXSens# CamMaxPitch - максимальный угол поворота камеры по X MouseYSens# - чувствительность мыши по Y, от 0 до 1 MouseXSens# - чувствительность мыши по X, от 0 до 1 |
Re: Ограничение наклона камеры в FPS
Угу, варриант Cyan'а имхо тут самый лучший, ни проскоков, контролируешь сенсивити и все прилогающиеся плюсы, только вот можно было избавиться от переменной CamYaw, хотя наверное с ней будет варриант чуток пошустрее.
А это: Код:
If (CamPitch > CamMaxPitch) Then CamPitch = CamMaxPitch Код:
If abs(CamPitch)>CamMaxPitch CamPitch=CamMaxPitch*Sgn(CamPitch) |
Re: Ограничение наклона камеры в FPS
Что-то не работают эти варианты. Может я туплю (наверно, точно туплю :"( ). Вот мой код для движения игрока:
CAM -камера, PL - игрок u# - ограничение наклона u#=80; TurnEntity CAM,MouseYSpeed(),0,0 TurnEntity PL,0,-MouseXSpeed(),0 If KeyDown(17) Then MoveEntity Pl,0,0,0.2 If KeyDown(31) Then MoveEntity Pl,0,0,-0.2 If KeyDown(30) Then MoveEntity Pl,-0.2,0,0 If KeyDown(32) Then MoveEntity Pl,0.2,0,0 MoveMouse 1024/2,768/2 mx=MouseXSpeed ()*0.5 my=MouseYSpeed ()*0.5 MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5 If Abs(EntityPitch#(CAM))=>u# RotateEntity CAM,u#*Sgn(EntityPitch#(CAM)),0,0 If EntityPitch#(Cam)>80 Then RotateEntity CAM,79.9,0,0 If EntityPitch#(Cam)<-80 Then RotateEntity CAM,-79.9,0,0 Как бы сюда это вставить, чтобы работало. А то я подставлял, и он вообще по оси X не крутился. |
Re: Ограничение наклона камеры в FPS
Не мудри, почитай и поймёшь принцип, а дальше сам под своё закодишь.
|
Re: Ограничение наклона камеры в FPS
Цитата:
|
Re: Ограничение наклона камеры в FPS
У меня вот так.Просто вставь это в цикл.
u#=70 my#=MouseYSpeed() mx#=MouseXSpeed() TurnEntity cam,my/8,0,0 TurnEntity player,0,-mx/8,0 MoveMouse GraphicsWidth()*0.1,GraphicsHeight()*0.1 If Abs(EntityPitch#(cam))>u# RotateEntity cam,u#*Sgn(EntityPitch#(cam)),0,0 |
Re: Ограничение наклона камеры в FPS
Maxxx.!!!., потому что у тебя юзаеться сразу достование градуса, а при применении граздуса на него применяеться Angle Mod 360, поэтому. А переменная это объодит, т.к. мы сперва проверяем переменную.
|
Re: Ограничение наклона камеры в FPS
Жжоте чуваки. Смотрите пятый пост - http://www.boolean.name/showpost.php...11&postcount=5 и не позорьтесь более.
|
Re: Ограничение наклона камеры в FPS
Разница в кодах только во внешнем виде и использовании Turn'а, из-за него и "проскакивание", когда скорость мыши большая. Я ограничил скорость мыши, но логичнее наверное юзать RotateEntity для поворотов.
JohnK, не позорнее постить прямо из семплов? |
Re: Ограничение наклона камеры в FPS
Цитата:
Я про то, что уже был дан идеальный вариант в пятом посте. И о том, что не надо что-то еще придумывать, а то пошли уже трюки всякие. :-D |
Re: Ограничение наклона камеры в FPS
JohnK, насчёт идеальности несоглашусь, к нему будет посложнее прикрутить сглаживание, чем к другому.
|
Часовой пояс GMT +4, время: 10:16. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot