Keine Kollision zw.Bullet & Enemy

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

the FR3AK

Betreff: Keine Kollision zw.Bullet & Enemy

BeitragMo, Dez 25, 2006 23:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich auf einen Gegner schiesse,und dann das Bullet mit dem Gegner kollidiert,soll der Gegner Gelöscht werden...nur wenn ich den Gegner auf Kollision überprüfe,klappt das nicht das heißt er wird nich gelöscht bei einer Kollision!

CODE:
Code: [AUSKLAPPEN]
   For i=0 To 10
      If ant(i)<>0
      If EntityCollided(ant(i),bull)
            FreeEntity ant(i)
      ant(i) = 0
      End If
      End If
      Next

bull ist das Projektil und ant ist der Gegner!

mfg.the FR3AK
 

Todeskop

BeitragDi, Dez 26, 2006 0:01
Antworten mit Zitat
Benutzer-Profile anzeigen
hast du denn auch für bull z.b. die kollisionsvariable angelegt also am anfang gesagt Code: [AUSKLAPPEN]
global bull=3

wenn nicht musst du natürlich nicht das entity angeben sondern die variable..
hoffe du kannst folgen?

the FR3AK

BeitragDi, Dez 26, 2006 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja hab ich:

Code: [AUSKLAPPEN]
Global bull=7


Bull wird dann auch einem Objekt zugeschrieben:
Code: [AUSKLAPPEN]
EntityType p\model,bull
 

Todeskop

BeitragDi, Dez 26, 2006 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
hastt du es überhaupt schon bei collisions eingetragen???
schreib am besten ma den kompletten code, ich untersuche den dann

~edit~
ich weiß warum du musst ant und bull umtauschen also..

the FR3AK

BeitragDi, Dez 26, 2006 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Global enemy=5
Global bull=7

Dim ant(11)

ant(0) = LoadAnimMesh("data/enemys/ant01.b3d")
ScaleEntity ant(0),1,1,1
EntityType ant(0),ENEMY
EntityRadius ant(0),0.1
PositionEntity ant(0),230,-90,223
ExtractAnimSeq ant(0), 1,9
Animate ant(0),1,.2,1,10


For i = 1 To 10
ant(i) = CopyEntity(ant(0))
PositionEntity ant(i),Rnd(0,100),Rnd(0,100),Rnd(0,100)
ExtractAnimSeq ant(i), 1,9
Animate ant(i),1,.2,1,10
Next

;Hauptschleife
...
updateshoot()
...
If MouseDown(1)=1 Then
...
p.shoot = New shoot
p\model=CopyEntity (bullet1)
EntityAlpha p\model,0
EntityType p\model,bull
...
end if

For i=0 To 10
If ant(i)<>0
If EntityCollided(ant(i),bull)
FreeEntity ant(i)
ant(i) = 0
End If
End If
Next


Das ist alles was du brauchst Wink

p.s. kann es sein das ich die Kollisionsabfrage in Updateshoot() schreiben muss?Wenn ja,dann hab ich das Problem das ich entity ant(i) nicht global machn kann...
 

Todeskop

BeitragDi, Dez 26, 2006 0:15
Antworten mit Zitat
Benutzer-Profile anzeigen
den kompletten -.-!!!!!!!!!
nicht nur den halben

the FR3AK

BeitragDi, Dez 26, 2006 0:17
Antworten mit Zitat
Benutzer-Profile anzeigen
warum?Auch Update shoot?
 

Todeskop

BeitragDi, Dez 26, 2006 0:19
Antworten mit Zitat
Benutzer-Profile anzeigen
ALLES

the FR3AK

BeitragDi, Dez 26, 2006 0:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier:

Code: [AUSKLAPPEN]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()
Global cam=CreateCamera(KameraPivot)
KameraPivot=CreatePivot()

gamefont1=LoadFont("data/fonts/gossip.ttf",45)
SetFont gamefont1

EntityType cam,Player
EntityType KameraPivot,Player
EntityParent cam,KameraPivot
PositionEntity KameraPivot,100,100,1000

CameraFogMode cam,1
CameraRange cam,1,500000
CameraFogRange cam,1400,3000
CameraFogColor cam,0,0,0
CameraClsColor cam,0,0,0
PositionEntity cam,0,80,0

Const Player=1,Obj=3
Global scene=2
Global enemy=5
Global bull=7

Dim ant(11)

ant(0) = LoadAnimMesh("data/enemys/ant01.b3d")
ScaleEntity ant(0),1,1,1
EntityType ant(0),ENEMY
EntityRadius ant(0),0.1
PositionEntity ant(0),230,-90,223
ExtractAnimSeq ant(0), 1,9
Animate ant(0),1,.2,1,10


For i = 1 To 10
ant(i) = CopyEntity(ant(0))
PositionEntity ant(i),Rnd(0,100),Rnd(0,100),Rnd(0,100)
ExtractAnimSeq ant(i), 1,9
Animate ant(i),1,.2,1,10
Next

Type shoot
    Field X#,y#,z#
    Field Model
   Field sprite
End Type

Global p.shoot

boden=CreatePlane()
PositionEntity boden,0,-200,0
EntityType boden,scene

Collisions Player,obj,2,1
Collisions Player,Scene,2,3
Collisions Player,Enemy,2,2
Collisions Enemy,scene,2,2
Collisions enemy,bull,2,2

bullet1=LoadSprite("data/sprites/hole.png")
ScaleSprite bullet1,2,2

gun=LoadMesh("Data/Gun/41/Gun.3ds")
ScaleEntity gun,.7,.7,.7
EntityParent gun,cam
TurnEntity gun,-180,90,180
PositionEntity gun,5,-5,9


While Not KeyHit(1)
Cls

UpdateShoot()


If KeyDown(17)Then
MoveEntity KameraPivot,0,0,30
End If

If KeyDown(31)
MoveEntity KameraPivot,0,0,-30
End If

If KeyDown(32)
MoveEntity KameraPivot,15,0,0
End If

If KeyDown(30)
MoveEntity KameraPivot,-15,0,0
End If

Mx#=MouseXSpeed()
My#=MouseYSpeed()
TurnEntity KameraPivot,0,-Mx/2,0
TurnEntity cam,My/2,0,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

WireFrame(0)


If KeyHit(57)=1 Then
sprungvar=1
End If

If sprungvar=1 Then
sprung#=sprung-1
If sprung#>5 Then
MoveEntity kamerapivot,0,60,0
MoveEntity cam,0,60,0
End If
If sprung#<5 Then
MoveEntity kamerapivot,0,-60,0
MoveEntity cam,0,-60,0
End If
If sprung#=0 Then
sprung#=10
PositionEntity cam,0,80,0
sprungvar=0
End If
End If



If MouseHit(1)=1 Then

            p.shoot = New shoot
            p\Model = CopyEntity(bullet1)
            EntityAlpha p\model,1
            EntityType p\model,bull
            PositionEntity p\Model,EntityX(kameraPivot),EntityY(kamerapivot)+80,EntityZ(kameraPivot)
            p\x = EntityX(kameraPivot)
            p\y = EntityY(kameraPivot)
            p\z = EntityZ(kameraPivot)
            RotateEntity p\Model,EntityPitch(cam,1),EntityYaw(cam,1),EntityRoll(cam,1),1
End If



   For i=0 To 10
      If ant(i)<>0
      If Not EntityCollided(ant(i),SCENE)
            TranslateEntity ant(i),0,-0.01,0
         End If
       End If
   Next
   

   For i=0 To 10
      If ant(i)<>0
      If EntityCollided(ant(i),bull)
            FreeEntity ant(i)
      ant(i) = 0
      End If
      End If
      Next



TranslateEntity kamerapivot,0,-50,0

UpdateWorld
RenderWorld
Flip
Wend
End

Function UpdateShoot()
   For p.shoot = Each shoot
   MoveEntity p\Model,0,0,100
   Next
End Function


Ich bin aber nich schuld wenns ärger wegen flooding gibt Rolling Eyes
 

Todeskop

BeitragDi, Dez 26, 2006 10:31
Antworten mit Zitat
Benutzer-Profile anzeigen
m.a musst du einfach nur ant und bull bei der if entitycolldided(...) tauschen...
ps: wegen dem flooding da gibt es viel schlimmere code als deinen ^^....
also du musst dann: 1. ant einen collisionstype zuweisen, das ist er nämlich nicht.2 dum musst ant ubd bull in der oben beschriebenen zeile tauschen also
ca nicht so:

Code: [AUSKLAPPEN]
   If EntityCollided(ant(i),bull)


sondern so:
Code: [AUSKLAPPEN]

   If EntityCollided(bull,die variable des schuss den du bei der collisions angeben musst)


und das wärs....
ps: hast aber seh von einer gewissen open DNA/ArcticRunner DEMO
abgeschaut Laughing Laughing Wink

the FR3AK

BeitragDi, Dez 26, 2006 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hä?Wie meinst du das:
die variable des schuss den du bei der collisions angeben musst Embarassed


~EDIT~
Was ist dann falsch?Wenn ich die Kollisionsabfrage in Updateshoot packe gehts auch nicht...
  • Zuletzt bearbeitet von the FR3AK am Di, Dez 26, 2006 16:16, insgesamt einmal bearbeitet
 

Todeskop

BeitragDi, Dez 26, 2006 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
dein schuss muss doch eine kollisionsvariable haben sost wäre es doch ziemlich unlogisch

~edit~
sorry vertan hasse schon( die kollisions variable)

the FR3AK

BeitragDi, Dez 26, 2006 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Confused ich hab gerade eine andere-etwas dumme-lösung gefunden:

Code: [AUSKLAPPEN]
      For i=0 To 10
      If ant(i)<>0
      If EntityDistance(p\model,ant(i))<20
      FreeEntity ant(i)
      ant(i) = 0
      End If
      End If
      Next


Aber sie funktioniert Rolling Eyes

~edit~

Code: [AUSKLAPPEN]

      If EntityCollided(bull,ant(i))


So?Dann klappt das aber nicht mehr Mad
  • Zuletzt bearbeitet von the FR3AK am Di, Dez 26, 2006 17:19, insgesamt einmal bearbeitet
 

Todeskop

BeitragDi, Dez 26, 2006 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe doch gesagt du musst die beiden umdrehen Rolling Eyes

the FR3AK

BeitragDi, Dez 26, 2006 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah jetzt gehts!


Ich hab noch n anderes kleines Problem...ich kann schiessen...aber wenn ich in meiner Spielwelt an ein paar bestimmten positionen stehe und dort schiesse kommt keine Kugel aus dem lauf...
  • Zuletzt bearbeitet von the FR3AK am Di, Dez 26, 2006 20:48, insgesamt 2-mal bearbeitet
 

Todeskop

BeitragDi, Dez 26, 2006 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
an welchen stellen ist des denn

the FR3AK

BeitragDi, Dez 26, 2006 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Immer an den gleichen...welche das sind weiß ich nicht.Die sind einfach i-wo auf der map!
 

Todeskop

BeitragDi, Dez 26, 2006 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ich brauch mehr infos über unter wasser,aufm land collidierend oder nicht,
beim fahren nicht beim fahren,beim springen nicht beim springen usw...

the FR3AK

BeitragDi, Dez 26, 2006 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
WO:Aufm Land
Wann:Immer wenn ich mich an diesen "da kann ich nicht schiessen Punkte bin"

Das Bullet hat Kollisionen und wird auch bei Kontakt mit der Scene etc. zerstört! Shocked

Die schussfunktion siehste ja oben!
 

Todeskop

BeitragDi, Dez 26, 2006 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
zeig ma nen scene vo dieser Stelle im spiel (sceenshoot)

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group