код
;============================================
DefScreenSizeX =800
DefScreenSizeY=600
DefScreenColorMode=32
Graphics3D DefScreenSizeX, DefScreenSizeY, DefScreenColorMode, 0
SetBuffer BackBuffer()
;============================================
Global player
Global camera
Global camPivot
Global camDest# = 24
;============================================
Function SpawnPlayer()
px# =0
py# =0
pz# =0
player = LoadAnimMesh ("data\models\tmp.b3d")
camPivot=CreateCamera(player)
camera=CreateCamera(camPivot)
PositionEntity player, px#, py#, pz#
PositionEntity camera, 0, camDest#, camDest# *-1
End Function
Function GroundPlane();test
ground = CreatePlane()
PositionEntity ground, 0, 0, 0
grass = LoadTexture("data\textures\ground01.tga")
ScaleTexture grass, 10, 10
EntityTexture ground, grass
End Function
Function PlayerControl()
V#=0.5
u#=0
camDest# =camDest# - MouseZSpeed()
If camDest# <4 Then camDest# =16
If camDest# >64 Then camDest# =32
TurnEntity camPivot, MouseYSpeed(),0,0
TurnEntity camPivot, 0,-MouseXSpeed(),0
If KeyDown(200) Then MoveEntity player, 0, 0, 1
If KeyDown(208) Then MoveEntity player, 0, 0, -1
If KeyDown(203) Then TurnEntity player, 0, 5, 0
If KeyDown (205) Then TurnEntity player, 0, -5, 0
MoveMouse GraphicsWidth()*0.5, GraphicsHeight()*0.5
PositionEntity camera, 0, camDest# , camDest# *-1
PointEntity camera, player
End Function
;============================================
GroundPlane()
SpawnPlayer()
;============================================
While Not KeyHit(1)=1
PlayerControl()
RenderWorld()
Print EntityPitch#(camPivot)
Print EntityYaw#(camPivot)
Print EntityRoll#(camPivot)
Flip
Wend
End
Проблема:
камера должна вращаться вокруг игрока- она это делает, но при определенном повороте по одной из осей начинается непредсказуемое вращение....
Пробовал ставить ограничения разные на угол поворота- получается резкий скачек при вращении камерой- не красиво.
Подскажите, пожалуста, как сделать нормальное вращение камеры вокруг игрока?