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 ...