Seite 1 von 1
SpriteCollision ohne feste Koordinaten?
Verfasst: 21.11.2010 19:05
von Little Progger
Ich bin grad an einem Spiel und stelle mir wie so oft die Frage:
Gibt es einen Befehl, bei dem überprüft wird, ob sich zwei Sprites schneiden aber ohne x und y werte anzugeben?
Oder eine Umschreibung oder so würde mir schon ziemlich weiter helfen...!
Re: SpriteCollision ohne feste Koordinaten?
Verfasst: 21.11.2010 19:16
von Thorium
Little Progger hat geschrieben:Ich bin grad an einem Spiel und stelle mir wie so oft die Frage:
Gibt es einen Befehl, bei dem überprüft wird, ob sich zwei Sprites schneiden aber ohne x und y werte anzugeben?
Oder eine Umschreibung oder so würde mir schon ziemlich weiter helfen...!
Natürlich nicht. Wie soll eine Kollision geprüft werden, wenn die Positionen der Sprites nicht bekannt sind?
Re: SpriteCollision ohne feste Koordinaten?
Verfasst: 21.11.2010 19:26
von STARGÅTE
Jo gibt es:
Wenn die Position der Sprites nicht bekannt ist, schneiden sie sich nicht, ganz einfach:
Code: Alles auswählen
Procedure SpriteCollisionWithoutPosition(Sprite1, Sprite2)
ProcedureReturn #False
EndProcedure
Ne, ganz ehrlich, verstehe auch nicht wie das gehen soll, bzw. was du meinst ...
Re: SpriteCollision ohne feste Koordinaten?
Verfasst: 21.11.2010 20:05
von Little Progger
Ich habe ne Prozedur geschrieben, in der man Wände erstellen kann. Jetzt hab ich ne Figur und die soll bei der Wand stehen bleiben. Die Wand besteht aus kleinen Sprites, die aber alle gleich sind. Nur weiß ich nich so genau, wie ich nun die Position dieser kleinen Sprites herrausfinden soll.
edit: hier mal die Prozeduren:
Code: Alles auswählen
Global Gx.f ;Damit der Bildschirm verschoben werden kann und die
Global Gy.f ;Bilder an der gleichen Stelle stehen bleiben
Structure boden
x.f
y.f
EndStructure
Global NewList boden.boden()
Procedure Findboden(x,y)
ResetList(boden())
While NextElement(boden())
If boden()\x+Gx=x And boden()\y+GY=y
Goto Ende2
EndIf
Wend
ProcedureReturn 0
Ende2:
ProcedureReturn 1
EndProcedure
Procedure addboden(x,y)
If MouseButton(1) And ListSize(boden())>0 And Findboden((Round(MouseX()/800*32,1)*25)-30,(Round(MouseY()/600*24,1)*25)-30)=0
AddElement(boden())
boden()\x=x-Gx
boden()\y=y-Gy
ElseIf ListSize(boden())=0
AddElement(boden())
boden()\x=x
boden()\y=y
EndIf
EndProcedure
Procedure deleteboden(x,y)
If MouseButton(2) And Findboden((Round(MouseX()/800*32,1)*25)-30,(Round(MouseY()/600*24,1)*25)-30)
DeleteElement(boden())
EndIf
EndProcedure
Procedure showboden()
ResetList(boden())
While NextElement(boden())
If boden()\x+gx>-25 And boden()\x+gx<801 And boden()\y+gy>-25 And boden()\y+gy<601
DisplayTransparentSprite(57,boden()\x+Gx,boden()\y+Gy)
EndIf
Wend
EndProcedure
Re: SpriteCollision ohne feste Koordinaten?
Verfasst: 21.11.2010 20:41
von STARGÅTE
Na die Position der kleinen Sprites ist natürlich da, wo du sie auch DisplayTransparentSprite() anwenden würdest, dort gibst du doch auch x, y an ...