forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Ограничение наклона камеры в FPS (http://forum.boolean.name/showthread.php?t=5282)

Maxxx.!!!. 15.12.2007 15:39

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)


У меня этот вариант не работает. Совсем.

moka 15.12.2007 16:04

Re: Ограничение наклона камеры в FPS
 
Maxxx.!!!., действия производишь в функции? Заглобалил переменные?

johnk 16.12.2007 12:04

Re: Ограничение наклона камеры в FPS
 
Цитата:

У меня этот вариант не работает. Совсем.
Быть такого не может. Прочти туторы по основам программирования, те что в справке блица.

Maxxx.!!!. 16.12.2007 16:48

Re: Ограничение наклона камеры в FPS
 
Цитата:

Сообщение от MoKa
Maxxx.!!!., действия производишь в функции? Заглобалил переменные?

Да. Я все это сделал. Все равно не пашет. Наверное, где-то ступил. Придумал свой вариант, вроде работает. На этом и успокоился.

)DEM( 18.12.2007 22:39

Re: Ограничение наклона камеры в FPS
 
Коипируешь это в самый конец проги, аж после слова енд, ваще в самый самый конец :)
Цитата:

Function updateMouse()

mxs=MouseXSpeed()
mys=MouseYSpeed()

dest_cam_yaw#=dest_cam_yaw#-mxs
dest_cam_pitch#=dest_cam_pitch#+mys
cam_yaw=cam_yaw+((dest_cam_yaw-cam_yaw)/5)
cam_pitch=cam_pitch+((dest_cam_pitch-cam_pitch)/5)

If cam_pitch>450 cam_pitch=450
If cam_pitch<-450 cam_pitch=-450


RotateEntity camera,cam_pitch#/8,cam_yaw#/8,0
MoveMouse (GraphicsWidth() Shr 1),(GraphicsHeight() Shr 1)

End Function



В цыкле програмы напиши

Цитата:

updatemouse()

Вот эта самая лучшая, и всегда работает как надо :) без единого глюка
Плавно, а главное камера управляется как раз так как надо для фпс :)
ток не забудь все переменые обьявить) а то скажешь не пашет)))
Забыл добавить ,может ты не знаешь, все переменые что сдесь в функции есть в том числе и камеру обьяви как глобальные.
Ум... ладно :)
вставь еще вот это в начале проги, (не в цыкле)
Цитата:

Global camera=CreateCamera()
Global cam_x#,cam_z#,cam_pitch#,cam_yaw#
Global dest_cam_x#,dest_cam_z#,dest_cam_pitch#
Global dest_cam_yaw#

butcher 28.12.2007 00:58

Re: Ограничение наклона камеры в FPS
 
Недавно шутир писал! У меня вот такая функция получилась:
Цитата:

Function AngleCameraView( Bnumb#, Nnumb#, Mnumb#)
If ( Nnumb# > 0 )Or( Nnumb# = 0 )
MNnumb# = Mnumb# - Nnumb#
If Bnumb# > 0
If Bnumb# < MNnumb# Return Bnumb#
If Bnumb# > MNnumb# Return MNnumb#
EndIf
If Bnumb# < 0 Return Bnumb#
EndIf
If Nnumb# < 0
MNnumb# = -Mnumb# + Nnumb#*-1
If Bnumb# < 0
If Bnumb# > MNnumb# Return Bnumb#
If Bnumb# < MNnumb# Return MNnumb#
EndIf
If Bnumb# > 0 Return Bnumb#
EndIf
End Function
Использовать так:
Цитата:

перм.Pitch# = перм.Pitch#+AngleCameraView(MouseYSpeed(),дейст.уг л(перм.Pitch#),верт.макс.угол)
P.S : только для Pitch!!!

butcher 28.12.2007 01:01

Re: Ограничение наклона камеры в FPS
 
Если непонятно, то вот отрывок из игры:
Цитата:

PLCPitch# =
PLCPitch# + AngleCameraView(MouseYSpeed()*Sensitivity#,PLCPitc h#,80.0)
PLCYaw# = PLCYaw# + MouseXSpeed()*Sensitivity#
If (PLCYaw# < 0) Then PLCYaw# = 360
If (PLCYaw# > 360)Then PLCYaw# = 0
RotateEntity(PLCamera,PLCPitch#,-PLCYaw#,0,0)
RotateEntity(PLCModel,0,-PLCYaw#,0)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot