Kollisionskontrolle macht Blödsinn

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

volcano

Betreff: Kollisionskontrolle macht Blödsinn

BeitragDo, Sep 01, 2011 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin, ich bin's schon wieder ^^ #annoyingnoob

Ich habe versucht, etwas breakout-artiges anzufangen, und ... naja, seht selbst:

http://www.youtube.com/watch?v=JjheCZcBooA

Ich habe im Grunde folgendes gemacht: Alle Blockgrafiken sind in einer Datei, die ich am Anfang lade, und habe eine Funktion geschrieben, die dann den gewünschten Block an die gewünschte Stelle malt, mit DrawBlockRect. Nur leider zickt die Kollisionskontrolle etwas rum. Irgendwie ist der Kollisionsbereich ziemlich ... groß?

(Wenn oben in der Ecke "KOLL" steht, ist die Kollisionsabfrage positiv)

Quelltextausschnitt:

Code: [AUSKLAPPEN]

   For i=0 To 255
      If Not LevelInfo(i,0) = 0 Then
         If ImagesOverlap(Ball, BallPosX, BallPosY, Bloecke, LevelInfo(i, 1), LevelInfo(i, 2)) Then
         
         ;LevelInfo(i, 3) = 255
         Text 2, 2, "----KOL----"
         
         EndIf
      EndIf
   Next


LevelInfo ist das Array, in dem alle Blockinfos stehen. 0 ist der Blocktyp, 1 und 2 sind die X- und Y-Koords, und 3 ist der "Zerströungsgrad".

Midimaster

BeitragDo, Sep 01, 2011 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Scheinbar überprüfst du ja nicht nur die eine kleine grafik in der linken oberen ecke, sondern einen ganzen satz von 255 blöcken. und mit irgendeinem dieser blöcke stößt der ball die ganze zeit zusammen, oder?

lass dir doch etwas mehr daten ausgeben, um genaueres zu erfahren:

BlitzBasic: [AUSKLAPPEN]
Text 2, 2, "----KOL---in Block=" + i  +"  bei X=" + LevelInfo(i, 1) +"/y=" +  LevelInfo(i, 2)



Vielleicht verschwindet aber auch einfach der Text nicht vom Bildschirm, obwohl keine Kollision vorliegt, probier das:

BlitzBasic: [AUSKLAPPEN]
   For i=0 To 255
If Not LevelInfo(i,0) = 0 Then
If ImagesOverlap(Ball, BallPosX, BallPosY, Bloecke, LevelInfo(i, 1), LevelInfo(i, 2)) Then

;LevelInfo(i, 3) = 255
Text 2, 2, "----KOL----"
Else
Text 2, 2, "--------------"

EndIf
EndIf
Next
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
 

volcano

BeitragDo, Sep 01, 2011 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit den 255 Blöcken ist nur dazu da, das Array durchzugehen. Wenn kein Block vorliegt (i,0 = 0) wird das ignoriert. Smile

Ich habe den zweiten Quellcode probiert, es scheint sich tatsächlich um ein ziemlich großes Gebiet zu handeln und nicht bloß um Lag.

Der zweite Code sagt mir, dass die Kollision immer bei 128/128 vorliegt - dort habe ich den Block platziert. Es handelt sich auch um i=0.

Sagt also das, was ich eh schon wusste: Irgendwie ist da viel zu viel Bild ...

Ich kann dir ja mal zeigen, welche Leveldatei ich einlesen lasse. ^^

Code: [AUSKLAPPEN]
2
128
128


Das ist alles. Die 2 steht für den TNT-Block.

Edit: Habe spaßeshalber einen anderen Block genommen, ändert nichts am "mysteriösen Kollisionsbereich".

Xeres

Moderator

BeitragDo, Sep 01, 2011 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Du prüfst eben das gesamte, große Bild auf Kollision, auch wenn du nur ein Teil davon zeichnest.
Benutze LoadAnimImage und verwende Frames.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

volcano

BeitragDo, Sep 01, 2011 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Aaaaaaah! Danke! Nur blöd dass ich von oben nach unten zählen muss. ^^ Edit: Doch nicht. Aber es fängt bei Null an, höhö

Edit2: Ich werd dann mal an den Winkeln arbeiten. >.<
 

NorthWind

BeitragFr, Sep 02, 2011 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ich klau mir mal eben eure Tipps.. hihi.. die können mir nämlich auch weiterhelfen. :p

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group