как сделать плавные повороты
млин надо сделать плавные поворты, точнее я их уже сделал, только при повышении "плавности" - тормоза ужасные.:wallbash:
делал, кажется, по примеру Diplomat'а. мож есть другие варианты, а-то казан совсем не варит:) |
Re: как сделать плавные повороты
всмысле тормозят ? ...
покажи код |
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 (208) 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] |
Re: как сделать плавные повороты
млин, спросил неправильно.
плавный разворот-в смысле плавный PointEntity, ну типа плавное разворачивание одного в сторону другого объекта а код был с испльзованием for q=0 to 10000 и DeltaYaw(),DeltaPitch(). |
Re: как сделать плавные повороты
for q=0 to 10000
теперь ясно почему тттормозиттт :lol: переделка кода нада :) |
Re: как сделать плавные повороты
я на блитц рр ответил уже. 2 строчки :)
|
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 (за один вызов функции). |
Re: как сделать плавные повороты
всем БОЛЬШОЙ БОЛЬШОЙ СПАСИБ!!!
|
Часовой пояс GMT +4, время: 22:33. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot