Sprite Candy - Robotersimulation, Probleme mit HUD_SetOrigin
Übersicht

![]() |
IguanBetreff: Sprite Candy - Robotersimulation, Probleme mit HUD_SetOrigin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute!
Ich weiss jetzt nicht wie viele von euch Sprite Candy haben, oder wieviele sich damit auskennen, aber ich stelle die frage trotzem mal ![]() Ich bin dabei eine kleine Roboter simulation zu schreiben, welche später mit der entsprechenden Hardware ergänzt werden soll. Der Roboter hat zwei räder und bewegt/dreht sich wie ein Panzer. Im folgenden code stellt das rote Rechteck den Roboter dar. durch drücken der Taste "1" (Numpad) soll sich das linke Rad drehen und durch drücken der Taste "3" (Numpad) das rechte. Jetzt habe ich aber probleme mit dem Befehl HUD_SetObjectOrigin, da der Roboter immer umher springt, anstelle dass er sich fortbewegt wenn sich beide Räder drehen ("1" und "3" gedrückt) was mache ich da falsch? Code: [AUSKLAPPEN] AufloesungX = 640 AufloesungY = 480 ; Roboter Angaben: RadDurchmesser# = 120 AnzahlImpulseProRadUmdrehung = 10 RadAbstand# = 300 RadUmfang# = RadDurchmesser# * Pi WegProImpuls# = RadUmfang# / AnzahlImpulseProRadUmdrehung WinkelProImpuls# = WegProImpuls# / (RadAbstand#) ;Winkel = Bogenmass / Radius PixelMillimeterFaktor# = 10000 Graphics3D AufloesungX, AufloesungY, 0, 2 : SetBuffer BackBuffer() KartenAusschnittGroesseX = 21 KartenAusschnittGroesseY = 15 KartenGroesseX = 100 KartenGroesseY = 75 Const RasterGroesse = 20 ; INCLUDE SPRITE CANDY Include "E:/Sprite Candy 1.0.12/sprite candy.bb" ; CREATE CAMERA, LIGHT, BACKGROUND Cam = CreateCamera() ; CREATE THE HUD HUD% = HUD_Create (Cam) ; CREATE LAYER MapLayer% = HUD_CreateLayer(HUD) RahmenLayer% = HUD_CreateLayer(HUD) RoboX = 100 RoboY = 100 Dim Quadrat(KartenAusschnittGroesseX,KartenAusschnittGroesseY) Dim Map(KartenGroesseX,KartenGroesseY) ; CREATE SHAPES (HUD, TYPE, PARAM1,PARAM2, X,Y, WIDTH,HEIGHT, X-ALIGN,Y-ALIGN) BalkenRechts = HUD_CreateShape (RahmenLayer,"RECTANGLE" ,1,0,(KartenAusschnittGroesseX+1)*RasterGroesse-RasterGroesse, 0, AufloesungX-((KartenAusschnittGroesseX+1)*RasterGroesse-RasterGroesse),AufloesungY,"","") ; FILLED HUD_SetObjectOrigin(BalkenRechts,-1,-1) HUD_SetObjectColor (BalkenRechts, 200,200,200) BalkenLinks = HUD_CreateShape (RahmenLayer,"RECTANGLE" ,1,0, 0, 0, RasterGroesse-2,AufloesungY,"","") ; FILLED HUD_SetObjectOrigin(BalkenLinks,-1,-1) HUD_SetObjectColor (BalkenLinks, 200,200,200) BalkenUnten = HUD_CreateShape (RahmenLayer,"RECTANGLE" ,1,0,0, (KartenAusschnittGroesseY+1)*RasterGroesse-RasterGroesse,AufloesungX,AufloesungY-((KartenAusschnittGroesseY+1)*RasterGroesse-RasterGroesse),"","") ; FILLED HUD_SetObjectOrigin(BalkenUnten,-1,-1) HUD_SetObjectColor (BalkenUnten, 200,200,200) BalkenOben = HUD_CreateShape (RahmenLayer,"RECTANGLE" ,1,0, 0, 0, AufloesungX,RasterGroesse-2,"","") ; FILLED HUD_SetObjectOrigin(BalkenOben,-1,-1) HUD_SetObjectColor (BalkenOben, 200,200,200) For X = RasterGroesse To RasterGroesse * KartenAusschnittGroesseX Step RasterGroesse For Y = RasterGroesse To RasterGroesse * KartenAusschnittGroesseY Step RasterGroesse Quadrat(X/RasterGroesse,Y/RasterGroesse) = HUD_CreateShape (MapLayer,"RECTANGLE" , 1,0, X, Y, RasterGroesse-1,RasterGroesse-1) ; FILLED HUD_SetObjectColor Quadrat(X/RasterGroesse,Y/RasterGroesse), 255,255,255 HUD_SetObjectOrigin(Quadrat(X/RasterGroesse,Y/RasterGroesse),-1,-1) Next Next Roboter = HUD_CreateShape(RahmenLayer,"RECTANGLE" , 1,0, RoboX, RoboY, 20, 40) HUD_SetObjectColor Roboter, 200,50,50 ; ------------------------------------------------------------------------ ; MAIN LOOP ; ------------------------------------------------------------------------ While Not KeyDown(1) mx = MouseX() my = MouseY() If MouseDown(1) Then If RectsOverlap(mx,my,1,1,RasterGroesse,RasterGroesse,(KartenAusschnittGroesseX-1)*RasterGroesse,(KartenAusschnittGroesseY-1)*RasterGroesse) Then Map(Int(Mx/RasterGroesse)+ScrollBlockX,Int(My/RasterGroesse)+ScrollBlockY) = 1 End If EndIf If MouseDown(2) Then If RectsOverlap(mx,my,1,1,RasterGroesse,RasterGroesse,(KartenAusschnittGroesseX-1)*RasterGroesse,(KartenAusschnittGroesseY-1)*RasterGroesse) Then Map(Int(Mx/RasterGroesse)+ScrollBlockX,Int(My/RasterGroesse)+ScrollBlockY) = 0 End If EndIf For X = RasterGroesse To RasterGroesse * KartenAusschnittGroesseX Step RasterGroesse For Y = RasterGroesse To RasterGroesse * KartenAusschnittGroesseY Step RasterGroesse If Map(X/RasterGroesse+ScrollBlockX,Y/RasterGroesse+ScrollBlockY) = 1 Then HUD_SetObjectColor Quadrat(X/RasterGroesse,Y/RasterGroesse), 100,100,100 Else HUD_SetObjectColor Quadrat(X/RasterGroesse,Y/RasterGroesse), 200,200,255 Next Next If KeyDown(205) And ScrollBlockX < KartenGroesseX - KartenAusschnittGroesseX Then ScrollBlockX = ScrollBlockX + 1 If KeyDown(203) And ScrollBlockX > 0 Then ScrollBlockX = ScrollBlockX - 1 If KeyDown(208) And ScrollBlockY < KartenGroesseY - KartenAusschnittGroesseY Then ScrollBlockY = ScrollBlockY + 1 If KeyDown(200) And ScrollBlockY > 0 Then ScrollBlockY = ScrollBlockY - 1 If KeyHit(17) Then wire% = Not wire% : WireFrame wire ;Impuls linkes Rad If KeyDown(79) Then HUD_SetObjectOrigin(Roboter,-1,0) HUD_TurnObject(Roboter,-WinkelProImpuls#) EndIf ;Impuls rechtes Rad If KeyDown(81) Then HUD_SetObjectOrigin(Roboter,1,0) HUD_TurnObject(Roboter,WinkelProImpuls#) EndIf HUD_Update() RenderWorld Flip 0 Wend End |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ist SetOrigin nicht dazu da zu sagen wo rotationspunkt bzw. 0,0 punkt des bildes ist. Das ist nicht dazu da um das bild zu bewegen ...
Ausser da wurden die funktionsbenamsungen sehr anti-intuitive genommen was ich bei XPressive schwer bezweifel. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm.. ok, und wie könnte ich das denn sonst bewerkstelligen??
MfG Iguan |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
HUD_PositionObject gemäss doku | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group