Sprite wird nicht vollständig gelöscht

Previous topic - Next topic

Shogun

Hallo alle zusammen, habe folgendes Problem, bei folgendem Code.

Code (glbasic) Select

TYPE SHOT
x
y
ENDTYPE

TYPE ENEMY
x
y
ENDTYPE

GLOBAL shots[] AS SHOT

GLOBAL enemys[] AS ENEMY

WHILE TRUE

IF b1

LOCAL railgun AS SHOT

railgun.x = playerx+20
railgun.y = playery

delay=GETTIMERALL()+500
DIMPUSH shots[], railgun
ENDIF

LOCAL soldier1 AS ENEMY

soldier1.x = 100
soldier1.y = 100

DIMPUSH enemys[], soldier1

FOREACH enemy IN enemys[]

FOREACH shot IN shots[]

IF SPRCOLL(4, shot.x, shot.y, 5, enemy.x, enemy.y)

didhit=TRUE

DELETE shot

ENDIF

NEXT

IF didhit

DELETE enemy

ENDIF

DRAWSPRITE 5, enemy.x, enemy.y

NEXT
FOREACH shot IN shots[]

DEC shot.y, 1

DRAWSPRITE 4, shot.x, shot.y

NEXT

Folgendes Problem, alles funktioniert soweit, nur sobald ich das enemysprite treffe wird das sprite gelöscht, aber der enemy scheint noch da zu sein, denn der schuss bleibt beim sprite hängen. Ich finde den Fehler nicht, würde mich freuen wenn jemand hilft.

Shogun


Quentin

zumindest dein DELETE Enemy macht nur innerhalb der FOR-NEXT-Schleife sind, nicht außerhalb. Probier das mal.

Shogun

Meines erachtens gehört es in die foreach shot. Wie gesagt das sprite verschwindet ja wenn ich es treffe, nur bleiben die schüsse danach an der sprite Position hängen. Ich habe beim shoot em up video von Gernot geschaut, habe es eigentlich genauso gemacht.

Kitty Hello

Du musst "didhit" am Anfang wieder auf FALSE setzen.

.... äh.. Du machst in jeder Schleife:
DIMPUSH enemys[], soldier1

also hast Du da ewig viele Enemies.
Mach mal:
PRINT LEN(enemys[]), 0,0
SHOWSCREEN


Shogun

Ach man, hab das didhit=false an jeder Stelle gesetzt, funktioniert aber nicht. Mit Len hast du recht. Da muss irgendwo noch ein Fehler sein. Ich finde ihn nicht.

Shogun

Endlich, einfach nur nicht in die while-Schleife setzten. Danke Gernot.

Mit an welcher Stelle was gehört, habe ich hier und da immer noch Probleme. Muss daran arbeiten.