Problem mit Schuss-Kollision II
Übersicht

![]() |
MegamagBetreff: Problem mit Schuss-Kollision II |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich mal wieder ^^
Mein Gegner kann nun sterben. Allerdings gibt es ein "Memory Accsess Violation" bei folgender Zeile: Code: [AUSKLAPPEN] If EntityCollided (e\box,C_PSHOT) Then
PaintMesh e\mesh,e\wtex e\churt=5 e\hurting=True EndIf Aber nicht einfach so. Genau dann, wenn ich einen Gegner miot einem Schuss getrffen habe, dieser gerade noch weiß blinkt und währenddessen ein anderer Schuss einen anderen Gegner trifft. Also man sieht auf dem Bild den weißen Gegner und den Schuss, wie er gerade an der Box vom Gegner ist. Hier ist der gesamte "MoveInvaders()" Code: [code]Function MoveInvaders() For e.enemy = Each enemy If e\number=1 Then ;------------------ If e\die=False Then ;------------------ If EntityX(e\mesh)>13 Then dir=-1 ElseIf EntityX(e\mesh)<-13 Then dir=1 EndIf If dir=1 Then ;rechts If e\yaw<90 e\yaw=e\yaw+1 If e\yaw>-90 Then MoveEntity e\mesh,0,-.02,0 EndIf TranslateEntity e\mesh,e\yaw/4400,0,0 ;bewegen ElseIf dir=-1 ;links If e\yaw>-90 e\yaw=e\yaw-1 TranslateEntity e\mesh,e\yaw/4400,0,0 ;bewegen If e\yaw<90 Then MoveEntity e\mesh,0,-.02,0 EndIf EndIf RotateEntity e\mesh,0,0,e\yaw If e\hurting=True Then If e\churt>0 Then e\churt=e\churt-1 Else e\churt=0 PaintMesh e\mesh,e\tex e\hurting=False e\life=e\life-1 EndIf EndIf If EntityCollided (e\box,C_PSHOT) Then PaintMesh e\mesh,e\wtex e\churt=5 e\hurting=True EndIf If e\life<=0 Then Animate e\mesh,3,.5 e\die=True FreeEntity e\box EndIf ;--------- EndIf ;--------- If e\die=True Then If e\animcount<10 e\alpcount=e\alpcount-0.05 EntityAlpha e\mesh,e\alpcount e\animcount=e\animcount-0.5 debug=e\animcount If e\animcount<=0 Then FreeBrush e\tex FreeBrush e\wtex FreeEntity e\mesh Delete e EndIf EndIf EndIf Next End Function[\code] Ich hoffe, ihr könnt mir nocheinmal helfen. Juhu, ich habe es hingekriegt!! Das Kommando "MoveInvaders()" musste vor dem Kommando "MoveBullets()" kommen, da der Schuss bei Kollision mit dem Gegner zerstört wird. Wenn MoveInvaders() nach dieser Tatsache kommt, dann versucht es auf eine Kollision mit dem Shcuss zuzugreifen, der gar nicht mehr existiert. Deshalb musste nur die Reihenfolge getauscht werden. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group