Kezdőoldal » Számítástechnika » Programozás » Hogyan irányítható egy magától...

Progizo kérdése:

Hogyan irányítható egy magától mozgó kúp mindig a csúcsa felé eső irányba BlitzBasic3D-ben?

Figyelt kérdés

Adott egy kúp, aminek mozognia kéne mindig arra, amerre a csúcsa néz. A csúcsot (illetve magát a kúpot) a nyíl gombokkal kéne forgatni. Itt a kód, ami valamiért nem jó; aki ért hozzá, próbálja ki és javítsa meg. Fizetségképpen fogadja hálás köszönetemet és azt a tudatot, hogy megmentett az agyvérzéstől:


Graphics3D 640,480

SetBuffer BackBuffer()


camera=CreateCamera()

light=CreateLight()


cone=CreateCone( 32 )

PositionEntity cone,0,0,5

sebesseg=1

vszamlalo=10

;RotateEntity cone,90,0,0


While Not KeyDown( 1 )


; Change rotation values depending on the key pressed

If KeyDown( 208 )=True Then pitch#=pitch#-1 ;X-tengelyen átbukás

If KeyDown( 200 )=True Then pitch#=pitch#+1

If KeyDown( 203 )=True Then yaw#=yaw#-1 ;Y-tengelyen átfordulás

If KeyDown( 205 )=True Then yaw#=yaw#+1

If KeyDown( 45 )=True Then roll#=roll#-1 ;Z-tengelyen átfordulás

If KeyDown( 44 )=True Then roll#=roll#+1


; Rotate cone using rotation values

RotateEntity cone,pitch#,yaw#,roll#


If EntityPitch#(cone)<90 Or EntityPitch#(cone)>270

x_elojel=1

ElseIf EntityPitch#(cone)=90 Or EntityPitch#(cone)=0

x_elojel=0

Else

x_elojel=-1

EndIf

;

If EntityYaw#(cone)<90 Or EntityYaw#(cone)>270

y_elojel=1

ElseIf EntityYaw#(cone)=90 Or EntityYaw#(cone)=0

y_elojel=0

Else

y_elojel=-1

EndIf

;

If EntityRoll#(cone)<90 Or EntityRoll#(cone)>270

z_elojel=1

ElseIf EntityRoll#(cone)=90 Or EntityRoll#(cone)=0

z_elojel=0

Else

z_elojel=-1

EndIf

;

vszamlalo=vszamlalo-1

If vszamlalo<=0

MoveEntity cone,x_elojel*sebesseg,y_elojel*sebesseg,z_elojel*sebesseg

vszamlalo=10

EndIf


RenderWorld


Text 0,0,"Use cursor/Z/X keys to change cone rotation"

Text 0,20,"Pitch: "+pitch#

Text 0,40,"Yaw : "+yaw#

Text 0,60,"Roll : "+roll#

Text 0,80,"X irány: "+EntityPitch#(cone)+"Y irány: "+EntityYaw#(cone)+"Z irány: "+EntityRoll#(cone)

Text 0,100,"Számláló: "+vszamlalo


Flip


Wend


End



2013. júl. 15. 16:17
 1/2 anonim ***** válasza:

A MoveEntity arra mozgatja az objektumot amerre forgatva lett, tehát elég megadni neki egy fix értéket és majd a rotateentity beállításai alapján elmozgatja a megfelelő irányba


MoveEntity cone,0,sebesseg,0


Persze játéknál jobb lenne fix időszámítást belevinni, hogy ne a processzortól függjön a sebesség

pl:

old_ms = MilliSecs()

sebesseg# = 0.001


A loopba pedig:


ms = MilliSecs()

dt = ms - old_ms

old_ms = ms


MoveEntity cone,0,sebesseg*dt,0

2013. júl. 15. 20:07
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:

Jé, tényleg működik: arra megy a kúp, amerre a csúcsa felé néz és lehet irányítani!

Még kielemzem az agyacskámban a kódodat, hogy mi hogyan s miért; mindenesetre köszönöm szépen a választ.

2013. júl. 16. 13:59

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!