Kollision geht aber nicht Korrekt... Warum??

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

g4ndhi

Betreff: Kollision geht aber nicht Korrekt... Warum??

BeitragFr, Feb 06, 2015 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Habe ein kleines Spiel Programmiert bzw bin gerade noch drüber...

Hier werden Luftballons abgeschossen die einfach von links nach rechts fliegen....

Das funktioniert soweit alles bis auf den Effekt das wenn ich am Ballon z.B. oben vorbei fliege und hinter ihn runter
dann eine Kollision passiert, obwohl ich eigentlich den Ballon nicht berühre..

Hier mal der Text der Kollisionsprüfung...

BlitzBasic: [AUSKLAPPEN]

For I = 1 To 6

If LuftBallon(I) = 1 Then

If ImagesCollide (Ballon,PosXballon(I),PosYballon(I),0,Flieger_1,PosXSpieler,PosYSpieler,0) Then
End
End If


End If

Next



Es Ist eine Bilddatei mit 4 Ballons... Es wird aber immer nur ein Ballon aus dem Bild gezeichnet....

Hier mal der Text dazu:


BlitzBasic: [AUSKLAPPEN]
For I = 1 To 6


If Luftballon(I) = 0 Then


If Zeit2 + 700 < MilliSecs() Then
Luftballon(I) = 1
PosXBallon(I) = 850
PosYBallon(I) = Rand(50,550)
Ballonfarbe(I) = Rand(1,4)
Zeit2 = MilliSecs()
End If


End If

Next


If Zeit2 + 700 < MilliSecs() Then
Zeit2 = MilliSecs()
End If



For I = 1 To 6

If Luftballon(I) = 1 Then



Select Ballonfarbe(I)
Case 1 DrawImageRect Ballon, PosXBallon(I),PosYBallon(I),0,0,54,108
Case 2 DrawImageRect Ballon, PosXBallon(I),PosYBallon(I),54,0,54,108
Case 3 DrawImageRect Ballon, PosXBallon(I),PosYBallon(I),108,0,54,108
Case 4 DrawImageRect Ballon, PosXBallon(I),PosYBallon(I),162,0,54,108
End Select


End If


Next



Vll hat jemand ja eine Idee..

mfg Manu

SamFisher

BeitragFr, Feb 06, 2015 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutzte den LoadAnimImage?
Sonst wird bei der Collision das ganze Images der Ballons gezählt(54x270)!
  • Zuletzt bearbeitet von SamFisher am Fr, Feb 06, 2015 21:33, insgesamt 2-mal bearbeitet

Xeres

Moderator

BeitragFr, Feb 06, 2015 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte poste möglichst lauffähigen, eingerückten Quellcode in passenden BB-Tags, damit man ihn schnell erfassen kann.
Von der Beschreibung her würde ich mal vermuten, dass du das gesamte Bild auf Kollision prüfst, aber tatsächlich nur ein Teil davon mit DrawImageRect anzeigst. Das Problem lässt sich vermutlich einfach durch LoadAnimImage lösen.
Types anstatt der vielen Arrays, würde auch Übersicht schaffen.
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)
 

g4ndhi

BeitragFr, Feb 06, 2015 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Danke für die Schnelle Antwort!


Ne ich benutze nicht LoadAnimImage.

Lade das Bild normal über LoadImage und Zeichne dann nur einen Bereich von dem Bild auf den Bildschirm..
javascript:emoticon('Very Happy')

Werde das mal mit LoadAnimImage testen und berichten...

OK! Sorry werde den Code das nächste mal anders hier einstellen..
 

g4ndhi

BeitragFr, Feb 06, 2015 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
So habs mal mit LoadAnimImage probiert und geht! Wink Super! Danke!


Hab gedacht BB berechnet nur das Rechteck was ich ausgeschnitten habe, bei einer Kollision....

mfg!!!

DAK

BeitragSa, Feb 07, 2015 10:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch eine Sache zu ImagesCollide: Dieser Befehl wird oft nicht mehr von aktuellen Grafikkarten unterstützt, es kann hier zu Abstürzen kommen. Mach am Besten die Kollision manuell (z.B. Kreis-Kreis-, Kreis-Rechteck- oder Rechteck-Rechteck-Kollision, diese drei Varianten sind alle sehr einfach zu implementieren). Ganz pixelgenau muss es sehr selten sein.
Gewinner der 6. und der 68. BlitzCodeCompo
 

g4ndhi

BeitragDi, Feb 10, 2015 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles klar!

Danke für den Hinweis..

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group