ImagesOverlap, trotz Löschung des Objektes
Übersicht

TrunxxBetreff: ImagesOverlap, trotz Löschung des Objektes |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo
Ich prüfe ob einer der Aliens mit meinem Raumschiff zusammenstösst. Bei jedem Zusammenstoss möchte ich "energie = energie - 1", allerdings wird nicht nur 1 abgezogen sondern immer 15 bis 30. So als ob der Alien mit dem schiff zusammenstösst nicht gleich gelöscht wird. Kann es damit zusammenhängen, dass ich bei der Explosion ein Animiertes Image habe und mein schiff nach dem Alien noch weiter mit dem Animieren Image kollidiert und deshalb bei energie 15 bis 30 abgezogen wird? Hier der Code der Alien Explosion: (aus dem Buch von Rene Meyer) Code: [AUSKLAPPEN] ;Explosion Alien zeichnen For I=1 To 5 If Alien(I,0) = -1 Then If AlienExplodiert(I,1) + 100 < MilliSecs() Then AlienExplodiert(I,0) = AlienExplodiert(I,0) + 1 AlienExplodiert(I,1) = MilliSecs() If AlienExplodiert(I,0) = 6 Then AlienExplodiert(I,0) = 0 AlienExplodiert(I,1) = 0 Alien(I,0) = 0 EndIf EndIf DrawImage explosion, Alien(I,1), Alien(I,2), AlienExplodiert(I,0) EndIf Next Und hier der Code der Kollisionsabfrage von Alien und Raumschiff: Code: [AUSKLAPPEN] For I=1 To 100 If Rak(I,0) <> o Then For J=1 To 5 If ImagesOverlap(alienbild, Alien(J,1), Alien(J,2), schiff, X,Y) Then PlaySound(trefferton) Alien(J,0) = -1 energie = energie - 1 EndIf Next EndIf Next Grüsse ![]() |
||
![]() |
Shogo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuche es mal so. Müßte eigentlich funzen.
Code: [AUSKLAPPEN] For I=1 To 100 If Rak(I,0) <> o Then For J=1 To 5 If ImagesOverlap(alienbild, Alien(J,1), Alien(J,2), schiff, X,Y) and Alien(J,0) <> -1 Then PlaySound(trefferton) Alien(J,0) = -1 energie = energie - 1 EndIf Next EndIf Next |
||
Trunxx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, hat wunderbar funktioniert.
Jetzt gibt es allerdings genau das gleiche Problem wenn ich zählen möchte, wieviele Aliens der Spieler verpasst hat -> wie viele den unteren Bildschirmrand passiert haben. Hier mein Code: Code: [AUSKLAPPEN] For J=1 To 5 If Alien(J,2) > 760 Then verfehlt = verfehlt + 1 EndIf Next An was liegt das eigentlich? Dann könnte ich diese Probleme in Zukunft selbst lösen ![]() |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich würde es mit dem Befehl Exit klären.
Benutzt du Exit, wird sofort ans Ende der Schleife gesprungen und dementsprechend nur eine Zahl zu einer Variablen addiert, oder subtrahiert - je nachdem. Code: [AUSKLAPPEN] ... verfehlt = verfehlt + 1 exit ... |
||
~ Hey Ho Let's Go ~ |
Gerhard |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das liegt daran, dass dein Alien wahrscheinlich nicht gelöscht wird, sondern noch weiterfliegt (die Bedingung > 760 ist also eine ganze Zeit lang erfüllt).
Deine Lösung klappt nur, wenn du dein Alien bei > 760 zugleich auch löschst oder wieder auf 1 setzt. Nur dann zählst du dein Alien nur einmal. |
||
Skullspliter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oder viel simpler: das Alien muss nicht >760 sein sondern genau =760
Dann wird es ja auch nur einmal gewertet ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde auf >760 prüfen und dann löschen.... falls du später mal die Geschwindigkeit der Feindschiffe erhöhst könnte es sonst zu Fehlern kommen. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Shogo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Liegt wahrscheinlich daran das du die position der schiffe auch noch veränderst wenn sie schon getroffen sind.
Würde es wieder so machen Code: [AUSKLAPPEN] For J=1 To 5 If Alien(J,2) > 760 and Alien(J,0) = 1 Then Then verfehlt = verfehlt + 1 EndIf Next So werden nur die Schiffe gezählt die noch nicht zerstört sind. Oder setze: Code: [AUSKLAPPEN] and Alien(J,0) = 1 in deine Function zum bewegen der Schiffe. So das sich nur noch die Schiffe bewegen die nicht zerstört sind. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group