Kollisionskontrolle macht Blödsinn
Übersicht

volcanoBetreff: Kollisionskontrolle macht Blödsinn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
volcano |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das mit den 255 Blöcken ist nur dazu da, das Array durchzugehen. Wenn kein Block vorliegt (i,0 = 0) wird das ignoriert. ![]() 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". |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du prüfst eben das gesamte, große Bild auf Kollision, auch wenn du nur ein Teil davon zeichnest.
Benutze LoadAnimImage ![]() |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
volcano |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich klau mir mal eben eure Tipps.. hihi.. die können mir nämlich auch weiterhelfen. :p | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group