Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 13.12.2007, 19:27   #1
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Ограничение наклона камеры в 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


А есть ли какой-нибудь готовый алгоритм, который бы работал без сбоев?
(Offline)
 
Ответить с цитированием
Старый 14.12.2007, 00:33   #2
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Ограничение наклона камеры в FPS

Что, никто не знает?
(Offline)
 
Ответить с цитированием
Старый 14.12.2007, 00:50   #3
FrankH
Разработчик
 
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений
(для 122 пользователей)
Вопрос Re: Ограничение наклона камеры в FPS

ИМХО метод дубовый, но попробуй так:
TurnEntity player,0,Float(-MouseXSpeed()*camspeed),0,True
yspd#=Float(MouseYSpeed()*camspeed)
If yspd#>20 yspd#=20
If yspd#<-20 yspd#=-20
If (EntityPitch#(Cam)<80) And (yspd#>0) Then
    TurnEntity cam,yspd#,0,0
Else
    If (EntityPitch#(Cam)>-70) And (yspd#<0) Then TurnEntity cam,yspd#,0,0
EndIf
ограничение вверх проскакивает иногда, если поставить (EntityPitch#(Cam)>-80)
(Offline)
 
Ответить с цитированием
Старый 14.12.2007, 01:15   #4
sSwSs
Оператор ЭВМ
 
Регистрация: 01.12.2007
Сообщений: 39
Написано 6 полезных сообщений
(для 7 пользователей)
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

У меня стоит так вроде....работает без глюков
Хотя может я и ошибаюсь...
(Offline)
 
Ответить с цитированием
Старый 14.12.2007, 03:23   #5
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Ограничение наклона камеры в FPS

ЖЖоте
CamYaw# = CamYaw + MouseXSpeed() * MouseXSens#
If (CamYaw >  359) Then CamYaw =  CamYaw - 360
If (CamYaw <    0) Then CamYaw = CamYaw + 360
CamPitch# = CamPitch - MouseYSpeed() * MouseYSens#
If (CamPitch >  CamMaxPitch) Then CamPitch =  CamMaxPitch
If (CamPitch < -CamMaxPitch) Then CamPitch = -CamMaxPitch
RotateEntity(Camera, CamPitch, CamYaw, 0)
Где
CamMaxPitch - максимальный угол поворота камеры по X
MouseYSens# - чувствительность мыши по Y, от 0 до 1
MouseXSens# - чувствительность мыши по X, от 0 до 1
(Offline)
 
Ответить с цитированием
Старый 14.12.2007, 15:31   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Ограничение наклона камеры в FPS

Угу, варриант Cyan'а имхо тут самый лучший, ни проскоков, контролируешь сенсивити и все прилогающиеся плюсы, только вот можно было избавиться от переменной CamYaw, хотя наверное с ней будет варриант чуток пошустрее.

А это:
If (CamPitch >  CamMaxPitch) Then CamPitch =  CamMaxPitch
If (CamPitch < -CamMaxPitch) Then CamPitch = -CamMaxPitch
Можно заменить так:
If abs(CamPitch)>CamMaxPitch CamPitch=CamMaxPitch*Sgn(CamPitch)
(Offline)
 
Ответить с цитированием
Старый 14.12.2007, 15:44   #7
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
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 не крутился.
(Offline)
 
Ответить с цитированием
Старый 14.12.2007, 15:49   #8
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Ограничение наклона камеры в FPS

Не мудри, почитай и поймёшь принцип, а дальше сам под своё закодишь.
(Offline)
 
Ответить с цитированием
Старый 14.12.2007, 15:59   #9
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Ограничение наклона камеры в FPS

Сообщение от MoKa
Не мудри, почитай и поймёшь принцип, а дальше сам под своё закодишь.
Так у меня в коде принцип, вроде бы, нормальный. А почему проскальзывает-то, этого я не пойму.
(Offline)
 
Ответить с цитированием
Старый 14.12.2007, 16:02   #10
newman
Бывалый
 
Регистрация: 20.11.2007
Сообщений: 663
Написано 145 полезных сообщений
(для 176 пользователей)
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
(Offline)
 
Ответить с цитированием
Старый 14.12.2007, 16:58   #11
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Ограничение наклона камеры в FPS

Maxxx.!!!., потому что у тебя юзаеться сразу достование градуса, а при применении граздуса на него применяеться Angle Mod 360, поэтому. А переменная это объодит, т.к. мы сперва проверяем переменную.
(Offline)
 
Ответить с цитированием
Старый 14.12.2007, 17:08   #12
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Re: Ограничение наклона камеры в FPS

Жжоте чуваки. Смотрите пятый пост - http://www.boolean.name/showpost.php...11&postcount=5 и не позорьтесь более.
(Offline)
 
Ответить с цитированием
Старый 15.12.2007, 00:16   #13
FrankH
Разработчик
 
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений
(для 122 пользователей)
Re: Ограничение наклона камеры в FPS

Разница в кодах только во внешнем виде и использовании Turn'а, из-за него и "проскакивание", когда скорость мыши большая. Я ограничил скорость мыши, но логичнее наверное юзать RotateEntity для поворотов.
JohnK, не позорнее постить прямо из семплов?
(Offline)
 
Ответить с цитированием
Старый 15.12.2007, 09:03   #14
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Re: Ограничение наклона камеры в FPS

JohnK, не позорнее постить прямо из семплов?
LOL?
Я про то, что уже был дан идеальный вариант в пятом посте. И о том, что не надо что-то еще придумывать, а то пошли уже трюки всякие.
(Offline)
 
Ответить с цитированием
Старый 15.12.2007, 11:22   #15
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Ограничение наклона камеры в FPS

JohnK, насчёт идеальности несоглашусь, к нему будет посложнее прикрутить сглаживание, чем к другому.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ограничение мышки по вертикали KingMaks Blitz3D 15 02.01.2010 21:17
Подсчет и ограничение символов в Input() ArtemkA 2D-программирование 8 24.07.2009 02:37
Ограничение преремещения объекта областью видимости камеры Raiter 3D-программирование 2 10.01.2008 03:27
Проблемка. Не срабатывает ограничение 0.о Raiter 2D-программирование 2 27.10.2007 12:14
Ограничение по координатам Valet 2D-программирование 8 27.08.2007 23:45


Часовой пояс GMT +4, время: 18:02.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com