ImagesCollide will nicht so wie ich :(
Übersicht

![]() |
AkibaBetreff: ImagesCollide will nicht so wie ich :( |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab vor'n paar Tagen angefangen BB-2D zu lernen und ich hab zu Testzwecken n kleines Spielchen geschrieben. In dem Spiel ist ein Monster und der Spieler. Das Monster wandert am oberen Bildschirmrand hin und her und verschießt manchmal Laser. Der Spieler, am unteren Bildschirmrand, kann sich durch Tasten auch hin udn her bewegen und Laser verschießen. Der Gesundheitszustand von Spieler und Monster werden außerdem noch angezeigt. Klappt auch alles soweit ganz gut.
Aber: der Spieler verliert Gesundheit, wenn das Monster dem Spieler gegenüber steht, selbst wenn das Monster garnicht angreift. Und dann verliert der Spieler nicht nur 1 mal 10 Punkte (so sollte es eigentlich sein), sondern gleich 4 mal 10 Punkte oder so. Andererseits verliert das Monster zwar nicht ohne Lasereinsatz Gesundheit, aber wenn man angreift, verliert es auch zu viel Gesundheit. Was mache ich falsch? Hier der ganze Code: Code: [AUSKLAPPEN] Graphics 800, 600
SetBuffer = BackBuffer ; Die Grafiken Monster = LoadImage("Monster.bmp") Angriff = LoadImage("Angriff.bmp") Spieler = LoadImage("Spieler.bmp") SAngriff = LoadImage("SAngriff.bmp") ; Die Musik Sound = LoadSound("Musik.mp3") LoopSound Sound Kanal = PlaySound(Sound) ChannelPitch Kanal, 15000 RL = 1 Sx = 375 Sy = 500 Health = 500 SHealth = 100 Repeat Cls ; Das Monster If x > 800 - 183 And RL = 1 Then RL = 2 If x = 0 And RL = 2 Then RL = 1 If RL = 1 Then x = x + 3 Else x = x - 3 DrawImage Monster, x, 15 ; Der Spieler If KeyDown(30) And Sx > 100 Then Sx = Sx - 2 If KeyDown(31) And Sx < 650 Then Sx = Sx + 2 DrawImage Spieler, Sx, Sy ; Der Angriff des Spielers If KeyDown(57) Then DrawImage SAngriff, Sx + 23, 0 If ImagesCollide(SAngriff, Sx + 23, 0, 0, Monster, x, y, 0) Then Health = Health - 10 EndIf ; Der Angriff des Monsters Zufall = Rnd(10) Text 10, 10, Zufall If Zufall > 9 Then DrawImage Angriff, x + 85, y + 95 If ImagesCollide(Angriff, x + 85, y + 95, 0, Spieler, Sx, Sy, 0) Then SHealth = SHealth - 10 EndIf ;Gesundheitsanzeigen Text 0, 580, "Gesundheit: " + SHealth Text 200, 580, "Monster: " + Health If KeyHit(5) Then Ende = 1 Flip Until Ende = 1 End |
||
PopUp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zuerst solltest du CreateTimer und WaitTimer einbauen damit das Spiel auf jedem Rechner gleich schnell läuft und dann die Warscheinlichkeit mit dem das Monster schießt verringern.
Das Problem ist das das Monster dich ca 4 mal trifft während es an dir vorbei geht (Man muss auch die breite des Lasers mit einberechnen) und du es durch Dauerfeuer auch ca 4 mal triffst. Ach ja : Du kannst statt ImagesCollide auch ImagesOverlap nehmen das ist schneller. |
||
.oO(Huch...) |
![]() |
Akiba |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke! Klappt jetzt so wie gedacht ![]() |
||
Luigi, man wendet sich nich gegen Familie... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group