Problem mit collide [gelöst]
Übersicht

damagerIIBetreff: Problem mit collide [gelöst] |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich mache für ein Projekt einen Space shooter. Nun habe ich folgendes Problem: Wenn ich auf den gegner schieße und diesen treffe möchte ich das dieser gelöscht wird. Nun weiß ich nicht genau wie das geht... ich habe es schon mal ausprobiert (ganz unten im code) aber anscheinend ist das falsch...
mfg damagerII Code: [AUSKLAPPEN] Graphics 1000,800,16,2
SetBuffer BackBuffer() Global Hero = LoadImage("shuttle.bmp") Global laser = LoadImage("shot2.bmp") Global gegner = LoadImage("hero2.bmp") MaskImage hero,0,0,0 MaskImage laser,255,255,255 MaskImage gegner,0,0,0 Global hero_x = 500, hero_y = 600, shot_counter = 0 Global gegner_x = 500, gegner_y = 50 Global time1 Global time2 Type shot Field shot_x Field shot_y End Type time1=MilliSecs() Repeat Cls time2=MilliSecs() moveHero() createLaser() Flip Until KeyHit(1) Function moveHero() If KeyDown(203) Then hero_x = hero_x - 3 If KeyDown(205) Then hero_x = hero_x +3 If KeyDown(200) Then hero_Y = hero_y -3 If KeyDown(208) Then hero_y = hero_y +3 DrawImage hero, hero_x, hero_y End Function Function createlaser() If KeyHit(57) Then shot_counter = shot_counter +1 End If If shot_counter = 1 Then info.shot = New shot info\shot_x = hero_x +40 info\shot_y = hero_y shot_counter = 0 End If For info.shot = Each shot info\shot_y = info\shot_y -8 DrawImage laser,info\shot_x,info\shot_y Next DrawImage gegner, gegner_x, gegner_y End Function Function collidegegner() For info.shot = Each shot If ImagesCollide(gegner, gegner_x, gegner_y, 0, laser, info/shot_x, info/shot_y, 0) Then Delete gegner EndIf End Function |
||
- Zuletzt bearbeitet von damagerII am Fr, Dez 04, 2009 15:52, insgesamt 2-mal bearbeitet
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
1.Nimm lieber ne andere Auflösung , könnte auf anderen PC´s Probleme geben. 2.Timer und Flip 0; Siehe:Hurra, 100% Auslastung 3.Du musst ja collidegegner() auch noch irgendwo aufrufen. Am besten in der Hauptschleife. So, ich glaube das sollte dir weiterhelfen. Mfg, count-doku |
||
damagerII |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok danke ![]() |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und vermeide ImagesCollide, siehe hier: https://www.blitzforum.de/foru...hp?t=27025 | ||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
damagerII |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
count-doku hat Folgendes geschrieben: Hi,
3.Du musst ja collidegegner() auch noch irgendwo aufrufen. Am besten in der Hauptschleife. So, ich glaube das sollte dir weiterhelfen. Mfg, count-doku Da kommt dann die Fehlermeldung Expecting 'EndIf' was hat das zu bedeuten? und wie löse ich das problem?? |
||
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann fehlt in deiner Funktion warscheinlich ein End If.
Ah nein, ich sehe grad du hasst ein Next vergessen. Code: [AUSKLAPPEN] Function collidegegner()
For info.shot = Each shot;Hier beginnst du die For Schleife If ImagesCollide(gegner, gegner_x, gegner_y, 0, laser, info/shot_x, info/shot_y, 0);Hier If Then Delete gegner EndIf;Hier end if Next;Das fehlte. End Function Mfg, count-doku |
||
damagerII |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke,
das Next hat wirklich gefehlt ![]() ![]() |
||
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
oh, hab ich glatt vergessen.
Das Then muss hinter die Bedingung. Code: [AUSKLAPPEN] Function collidegegner()
For info.shot = Each shot If ImagesCollide(gegner, gegner_x, gegner_y, 0, laser, info/shot_x, info/shot_y, 0) Then Delete gegner EndIf Next End Function |
||
damagerII |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
![]() Code: [AUSKLAPPEN] Function collidegegner()
For info.shot = Each shot If ImagesCollide(gegner, gegner_x, gegner_y, 0, laser, info/shot_x, info/shot_y, 0) Then Delete gegner EndIf Next End Function aber jetzt kommt eine neue fehlermeldung: Arithmetic operator cannot be applied to custom type objects und ehrlich gesagt habe ich keine Ahnung was diese Fehlermeldung bedeutet... |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest dir noch n Type-Tut zu Gemüte führen...
Der Zugriff auf Type-"Fields" erfolgt nicht durch einen Schrägstrich (dieser bedeutet dividieren -> "Arithmetic Operator" ![]() ![]() |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
damagerII |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hey das war das problem ![]() jetzt klappt's danke an euch beide ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group