Problem mit Schuss-Kollision

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Megamag

Betreff: Problem mit Schuss-Kollision

BeitragSo, Apr 05, 2009 15:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Ich habe ein Problem.
Oben fliegen Space-Invaders mäßig Raumschiffe immer weiter nach unten. Der Spieler soll sie
abschießen. Die Schüsse fliegen und werden testweise an den Gegnern zerstört. Es läuft die
ersten paar Sekunden gut, und danach, wenn die Gegner tiefer sind, werden die Schüsse komischer-
weiße genau auf den Gegnern erstellt und zerstört, unabhängeig von der Position des Spielers. Ich
komme einfach nicht darauf, wieso. Es ist auch egal, welche Kollisionsart ich nehme, alles habe ich schon
ausprobieret. Ich habe den Gegnern sogar eine Boundingbox gegeban, aber auch die hilft nicht. Hier
die Codes:

Gegner erstellen
Code: [AUSKLAPPEN]
e.enemy = New enemy      
         e\mesh=CopyMesh(mesh1)
         e\number=1
         e\yaw=0
         e\box=CreateCube()
         ScaleEntity e\box,.6,.6,.6
         EntityAlpha e\box,.3
         EntityType e\box,C_ENEMY
         ScaleEntity e\mesh,.06,.06,.06
         PositionEntity e\mesh,X*2.4-13+Rnd(-0.15,0.15),-Y*1.8+10+Rnd(-0.15,0.15),0
         PositionEntity e\box,EntityX(e\mesh),EntityY(e\mesh),EntityZ(e\mesh)
         EntityParent e\box,e\mesh


Schuss erstellen:
Code: [AUSKLAPPEN]

Function CreatePlayerBullet(x#,y#,z#,kind)
b.shot = New shot
b\mesh = CreateSphere(8)
ScaleEntity b\mesh,.1,.1,.1
EntityType b\mesh,C_PSHOT
EntityRadius b\mesh,.1
b\kind=kind
PositionEntity b\mesh,x,y,z
End Function


Schuss bewegen:
Code: [AUSKLAPPEN]
Function MoveBullets()
For s.shot = Each shot
If s\kind=1 Then
TranslateEntity s\mesh,0,.1,0
      If EntityY(s\mesh)>15 Then
   FreeEntity s\mesh
   Delete s
      ElseIf EntityCollided (s\mesh,C_ENEMY) Then
   FreeEntity s\mesh
   Delete s
      EndIf
EndIf
Next
End Function


Player schießen:
Code: [AUSKLAPPEN]
If p\i>0 Then
p\i=p\i-1
ElseIf p\i<1 Then
p\i=8
EndIf

If KeyHit(k_shoot) i=0

If KeyDown(k_shoot) And p\i<1 Then
CreatePlayerBullet(EntityX(p\mesh)+p\sp,EntityY(p\mesh)+1.2,EntityZ(p\mesh),1)
EndIf


Collisions:
Code: [AUSKLAPPEN]
Const C_ENEMY=1
Const C_PSHOT=2
Const C_PLAYER=3

Collisions C_PSHOT,C_ENEMY,2,1


Ich hoffe, ihr könnt mir helfen, ich weiß echt nicht mehr weiter Sad

Mr.Keks

BeitragSo, Apr 05, 2009 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
schreib mal testweise ein ResetEntity für das schussmesh hinter das positionentity im schusserstellcode! (=
MrKeks.net

Megamag

BeitragSo, Apr 05, 2009 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Dankeschön Very Happy
Das hat wunderbar geklappt!
Wieder ein Kommando mehr gelernt! Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group