Kollision per Tilemap ungenau?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Pousup

Betreff: Kollision per Tilemap ungenau?

BeitragDi, Nov 24, 2009 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Huhu.

Ich arbeite gerade ein einem Remake des Spiels "Bomber" für den ZX Spectrum.
Dabei habe ich die Häuser in Tiles gespeichert, die in einem Array liegen - soweit
so gut.

Das Problem ist bei mir nur, dass wenn ich die Bombe abgeworfen hab, und sie das
Haus am rechten Rand berührt, keine Kollision erkannt wird. Ich schätze mal das liegt
daran, dass ich für die Y-Koordinaten der Bombe eine Kommazahl verwende, damit die Bombe
nicht von Tile zu Tile hoppelt. Bei der Kollision benutze ich den Befehl Int(bombe_y), was mein Problem
allerdings nur Teilweise löst, da BB bei Integerzahlen rundet, und so eben diese ungenauigkeiten bei der Kollisionsabfrage entstehen. Was ich nun suche ist eine Funktion (oder ein Befehl) der bei einer Kommazahl die Nachkommastellen ignoriert. Gibt es da vielleicht sogar eine BB-Interne Funktion, die ich übersehen habe?

Code: [AUSKLAPPEN]

Select map(bombe_x/64,bombe_y/64)
         Case 0
         Case 1
            map(Int(bombe_x/65),Int(bombe_y/64)) = 0
               map(Int(bombe_x/65),Int((bombe_y/64))+1) = 0
               buildings = buildings - 1
               abwurf = False
         Case 2
            map(Int(bombe_x/65),Int(bombe_y/64)) = 0
               map(Int(bombe_x/65),Int((bombe_y/64))+1) = 4
               buildings = buildings - 1
               abwurf = False
         Case 3
            map(Int(bombe_x/65),Int(bombe_y/64)) = 0
               map(Int(bombe_x/65),Int((bombe_y/64))+1) = 4
               buildings = buildings - 1
               abwurf = False
         Case 4
            If abwurf = True Then
               map(Int(bombe_x/65),Int(bombe_y/64)) = 0
               map(Int(bombe_x/65),Int((bombe_y/64))+1) = 4
               buildings = buildings - 1
               abwurf = False
            EndIf
End Select


(Die Variable buildings ist dazu da, um zu überprüfen, wann keine Gebäude mehr auf
der Map stehen - und ich weiß, dass die Kollisionsabfrage noch einige Probleme aufwirft, aber
daran wird noch gebastelt Smile )

Im Voraus schon mal Vielen Dank für die Hilfe!

mpmxyz

BeitragDi, Nov 24, 2009 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Kennst du Floor? Smile
Das sollte die Funktion sein, die du suchst.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

Pousup

BeitragDi, Nov 24, 2009 22:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube in der Beginners-Corner bin ich ganz richtig.... Embarassed
Danke für die schnelle Hilfe, jetzt klappts.

Edit: Ich seh gerade, jetzt funktionierts am rechten Rand, am linken bleibt das Problem.

Starwar

BeitragDi, Nov 24, 2009 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuche mal eine Fallunterscheidung: Rechts Floor links Ceil
MFG

orpheus_2003

BeitragMi, Nov 25, 2009 8:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh Mann.

An diesem Problem hing ich bei meinem Jump&Run auch.
Ungenauigkeit der Tilesabfrage.
Habs auch mit Floor und Ceil geschafft...
Ist ein Schlauch......

Viel Glück
GazerStar - the beginning
http://gazerstar.lexigame.de/
Wizard (Worktitel)
http://wizard.lexigame.de
 

Pousup

BeitragMi, Nov 25, 2009 10:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok vielen Dank für die Antworten Smile

Ich werd's nacher mal ausprobieren.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group