Tileset-Kollision

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

sprime

Betreff: Tileset-Kollision

BeitragFr, Okt 02, 2009 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute.. Ich habe mal eine kleine Frage.. Ich habe in meinem Jump'n'run spiel als Tiles einige Stacheln eingebaut, an denen der spieler sterben soll, wenn er sie berührt.. wie mach ich das jetz mit der kollision?

darth

BeitragFr, Okt 02, 2009 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

eine Kollision erreichst du, indem du die Koordinaten des Spielers relativ zu denen der Stacheln abgleichst und überprüfst, ob sie sich überschneiden. Wenn ja, dann kannst du deinen Spieler pfählen oder auf andere Weise grausam umbringen.

Ich wünsche dir viel Spass beim weiteren programmieren,

mfg,
Darth
Diese Signatur ist leer.
 

sprime

BeitragFr, Okt 02, 2009 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
also muss ich jede kollision von allen 15 stacheln einzeln abfragen ?? geht das nicht irgentwie einfacher ?

darth

BeitragFr, Okt 02, 2009 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo nochmal,

du könntest versuchen die 15 Stacheln in ein einzelnes Polygon zu bringen, dafür müssten sie allerdings in einem zusammenhängenden Gebiet sein (d.h du kannst von jedem Stachel zu jedem Stachel einen Weg bilden, ohne das Gebiet der Stacheln zu verlassen). Dann könntest du die Spielerkoordinaten mit diesem Polygon schneiden.

Allerdings ist das eine ziemlich dämliche Idee.
Das würde nämlich dazu führen, dass dein System ziemlich fix ist, und wenn du im Nachhinein etwas ändern willst, hast du Probleme.

Es empfiehlt sich daher, die Stacheln in einem einheitlichen Format zu speichern (Type, Array, Bank) und dann - ja! - für jede der 15 Stacheln den Kollisionscode aufzurufen.

Weiterhin viel Spass und viel Erfolg mit deinem Spiel,

mfg,
Darth
Diese Signatur ist leer.

orpheus_2003

BeitragSa, Okt 03, 2009 9:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder du prüfst nur die Tiles.
Die Stachlen müssten doch immer das gleiche sein.

Dann prüfst du, ob der Player mit dem Tile kollidiert

Code: [AUSKLAPPEN]
   
;x2: Playerx/32 + Mapx
;Y2: Playery/32 + Mapy
; Stachlen
If MaptileX(X2,Y2)=17 And MaptileY(X2,Y2)=1 Then Lifes=Lifes-1


So mach ich das. Geht schnell und gut.
GazerStar - the beginning
http://gazerstar.lexigame.de/
Wizard (Worktitel)
http://wizard.lexigame.de
 

sprime

BeitragSa, Okt 03, 2009 11:47
Antworten mit Zitat
Benutzer-Profile anzeigen
orpheus_2003 hat Folgendes geschrieben:
Oder du prüfst nur die Tiles.
Die Stachlen müssten doch immer das gleiche sein.

Dann prüfst du, ob der Player mit dem Tile kollidiert

Code: [AUSKLAPPEN]
   
;x2: Playerx/32 + Mapx
;Y2: Playery/32 + Mapy
; Stachlen
If MaptileX(X2,Y2)=17 And MaptileY(X2,Y2)=1 Then Lifes=Lifes-1


So mach ich das. Geht schnell und gut.



sorry, dass habe ich nich ganz verstanden ^^

Nicdel

BeitragSa, Okt 03, 2009 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Er meint, dass du immer das Tile unter dem Spieler überprüfen sollst und falls es ein Stachel-Tile ist, ziehst du ein Leben ab.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

orpheus_2003

BeitragSo, Okt 04, 2009 9:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Bischen einfacher....
Code: [AUSKLAPPEN]
   
;x2: Playerx/32 + Mapx  (hier musst du zuerst den Player / 32 zählen, wenn dein Tile 32 Pixel gross ist)
                            ;(MapX ist die Verschiebung der Map wenn du eine grössere hast. Sonst weglassen)
;Y2: Playery/32 + Mapy (gleich in Y)
; Stachlen (Beispiel, Je nachdem was du für Felder hast für die Tiles.)
If TileStachel(x,y)=1 Then Lifes=Lifes-1
GazerStar - the beginning
http://gazerstar.lexigame.de/
Wizard (Worktitel)
http://wizard.lexigame.de

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group