Ball prallt nicht von aus Datei erzeugten Blöcken ab

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Luciano

Betreff: Ball prallt nicht von aus Datei erzeugten Blöcken ab

BeitragDi, Jul 25, 2006 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jul 25, 2006 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Luciano

BeitragDi, Jul 25, 2006 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm das geht ein bisschen schnell... Confused
Ist map() be dir das Dimfeld?
und 32 ist die ballbreite und Höhe?
Warum ordnest du das ganze den variablen zu?

Rone

BeitragDi, Jul 25, 2006 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
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... Wink

mfg
Rone

Hubsi

BeitragDi, Jul 25, 2006 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Very Happy
Zu den restlichen Fragen: Ja Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group