Показать сообщение отдельно
Старый 29.09.2006, 22:48   #3
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: как сделать плавные повороты

Подойдет?
[highlight=blitzbasic]
Graphics3D 800, 600, 16, 2
SetBuffer BackBuffer()

cam=CreateCamera()
PositionEntity cam, 0, 20, 0
RotateEntity cam, 90, 0, 0

lit=CreateLight()
PositionEntity lit, 0, 10, 0
RotateEntity lit, 90, 0, 0

Global player=CreateCone (32)
RotateEntity player, 90, 0, 0



Global orient=0 ;0 - up
;1 - right
;2 - down
;3 - left
Global lim=0
Global turnstep=0

While Not KeyHit (1)
moving%=0
If KeyDown (200) Then dir=0: moving=1
If KeyDown (20 Then dir=2: moving=1
If KeyDown (203) Then dir=3: moving=1
If KeyDown (205) Then dir=1: moving=1
If moving Then Move (dir)

RenderWorld
Flip
Wend

Function Move (dir)
sign=0
stat=dir-orient

lim=0
If stat=1 Or stat=-3 ;turn right
lim=90
sign=2
ElseIf stat=-1 Or stat=3 ;turn left
lim=-90
sign=-2
Else
If stat<>0 Then lim=180: sign=2 ;turn around
End If

If lim
TurnEntity player, 0, -sign, 0, 1
turnstep=turnstep+sign
If turnstep=lim Then orient=dir: lim=0: turnstep=0
Else
MoveEntity player, 0, .1, 0 ;move if dir=orient
End If
End Function

End
[/highlight]
(Offline)
 
Ответить с цитированием