Ball prallt nicht von aus Datei erzeugten Blöcken ab
Übersicht

LucianoBetreff: Ball prallt nicht von aus Datei erzeugten Blöcken ab |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo zusammen!
Ich habe in einem Dim Feld (kacheln(23,31) das ich in meinem Leveleditor erzeugt habe, einen Levelhintergrund aus verschiedenfarbigen Kacheln in Form von verschiedenen Zahlen gespeichert. 9 bedeutet Luft 0-8 sind die verschiedenfarbigen Kacheln Jede Kachel ist 40*40 Pixel gross. Das Spiel ist 1280 * 960, deshalb habe ich das Dim Feld wie oben genannt gewählt. Das level könnt ihr euch so vorstellen: Einige rechteckige Plattformen hängen in der Luft und der Ball sollte an diesen abprallen. Wie kann ich nun mit möglichst geringem Arbeitsspeicheraufwand kontrollieren, ob der Ball von oben, unten, links oder rechts an eine Plattform oder einzelne Kachel prallt? Die Berechnung des Abprallwinkels ist mir klar. Danke für die Antworten! |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] u=map((x+16)/32,(y-2)/32,0) ; Oben / Up
r=map((x+32)/32,(y+16)/32,0) ; Rechts / Right d=map((x+16)/32,(y+32)/32,0) ; Unten / Down l=map(x/32,(y+16)/32,0) ; Links / Left m=map((x+16)/32,(y+16)/32,0) ; Mitte / Middle Das ganze geht von 32*32 Pixel aus, das anzupassen sollte aber spätestens nach verstehen der Berechnungen eine Sache von Sekunden sein ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Luciano |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hm das geht ein bisschen schnell... ![]() Ist map() be dir das Dimfeld? und 32 ist die ballbreite und Höhe? Warum ordnest du das ganze den variablen zu? |
||
![]() |
Rone |
![]() Antworten mit Zitat ![]() |
---|---|---|
moin,
Du musst das nicht unbedingt den Variablen zuorden, dass ist dir überlassen wie du den Mapeintrag an der Obejektposition verarbeitest.... Zum beispiel kannst du das auch so prüfen: Code: [AUSKLAPPEN] ;nach oben bewegen
if keydown(Key_Up) then y=y-1 ;wenn kollision, bewegung rückgängig machen if map((x+20)/40,(y)/40) = 9 then y=y+1 endif endif ... ...oder wie auch immer, kommt immer drauf an was du grad machen willst... ![]() mfg Rone |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weil ich die Werte in aller Regel mehrmals in der Hauptschleife brauche und es schneller ist den Wert einer Variable zu lesen als ständig den Kram neu berechnen zu lassen ![]() Zu den restlichen Fragen: Ja ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group