Показать сообщение отдельно
Старый 30.09.2006, 01:53   #7
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: как сделать плавные повороты

Graphics3D 800,600
SetBuffer BackBuffer()

obj1=CreateSphere()

obj2=CreateCone()
RotateMesh obj2,90,0,0

p=CreatePlane()
EntityAlpha p,0.5
EntityColor p,255,0,0

cam=CreateCamera()
PositionEntity cam,0,10,-20
RotateEntity cam,45,0,0

l=CreateLight()

PositionEntity obj2,0,0,0
PositionEntity obj1,4,4,4

EntityBox p,-10000,-2,-10000,20000,2,20000
EntityPickMode p,3

While Not KeyDown(1)

If MouseDown(1)
CameraPick(cam,MouseX(),MouseY())
cx#=PickedX()
cz#=PickedZ()
PositionEntity obj1,cx,4,cz
EndIf

curvepointentity(obj2,obj1,5,5)
MoveEntity obj2,0,0,0.3
RenderWorld
Flip

Wend

Function CurvePointEntity(ent1,ent2,speedx#=1,speedy#=1)
dx#=DeltaPitch(ent1,ent2)
dy#=DeltaYaw(ent1,ent2)
If Abs(dx#)>speedx# Then TurnEntity ent1,speedx#*Sgn(dx),0,0 Else TurnEntity ent1,dx,0,0
If Abs(dy#)>speedy# Then TurnEntity ent1,0,speedy#*Sgn(dy),0 Else TurnEntity ent1,0,dy,0
End Function

Собственно ent1 - который надо повернуть, ent2 - на который надо повернуть,speedx - скорость поворота по оси х (за один вызов функции),speedy - скорость поворота по оси Y (за один вызов функции).
(Offline)
 
Ответить с цитированием