Schuss Problem.

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Ardalic

Betreff: Schuss Problem.

BeitragMo, Jun 30, 2008 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich möchte gerne das die schüsse nach 30 sec. verschwinden.
Code:
Code: [AUSKLAPPEN]
Function UFOBullets()

   
   For t.trail=Each trail
      EntityAlpha t\entity,t\alpha
      t\alpha=t\alpha-0.01
      If t\alpha<=0
         FreeEntity t\entity
         Delete t      
      EndIf
   Next

   
   For ub.ufo_bullet=Each ufo_bullet
      b.bullet_trail=New bullet_trail : b\entity=CopyEntity(ub\entity) : EntityType b\entity,0 : b\alpha=1
      MoveEntity ub\entity,0,0,-20
      If EntityDistance(ub\entity,plane1)>5000 Or EntityY(ub\entity)<=-10 Then FreeEntity ub\entity : Delete ub
   Next

   For b.bullet_trail=Each bullet_trail
      b\alpha=b\alpha-0.1
      EntityAlpha b\entity,b\alpha
      If b\alpha<=0 Then FreeEntity b\entity : Delete b
   Next

End Function
 

da_poller

BeitragMo, Jun 30, 2008 20:29
Antworten mit Zitat
Benutzer-Profile anzeigen
dann bau in den jeweiligen type nen platz ein wo die entstehungszeit gespeichert wird und wenn die aktuelle zeit größer als 30 sec is lösche den schuss


millisec() is da behilflich Smile
 

Ardalic

BeitragMo, Jun 30, 2008 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ich schaffe es nicht

Firstdeathmaker

BeitragMo, Jun 30, 2008 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Erweitere deinen Bullet-Type um folgende Zeile:

Code: [AUSKLAPPEN]
Field birthtime


Wenn du eine neue Instanz von Bullet erzeugst, übergibst du diesem die aktuelle Zeit:
Code: [AUSKLAPPEN]
b.Bulltet = new Bullet
b\birthtime = millisecs()


und immer wenn du alle bullets durchgehst, prüfst du ob 30 Sekunden seit erstellen vergangen sind:

Code: [AUSKLAPPEN]
for b.Bullet = each Bullet
if millisecs() - b\birthtime > 30000 delete b
next
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

Ardalic

BeitragMo, Jun 30, 2008 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt verstehe ich nur noch Bannhof

Firstdeathmaker

BeitragMo, Jun 30, 2008 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab das ganze jetzt mal mit 1 Sek bis gelöscht werden geproggt:

Code: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer BackBuffer()



Repeat
   TBullet_logic()
   If KeyHit(57) TBullet_create(0,300,5,0)
   Cls
   

   TBullet_render()
   Flip
Until KeyHit(1)
End


Type TBullet
   Field birthtime%
   Field pos#[2]
   Field speed#[2]
End Type


Function TBullet_create.TBullet(x#,y#,speedx#=0,speedy#=0)
   b.TBullet = New TBullet
   b\birthtime = MilliSecs()
   b\pos[0] = x
   b\pos[1] = y
   b\speed[0] = speedx
   b\speed[1] = speedy
   Return b
End Function

Function TBullet_logic()
   Local time% = MilliSecs()
   For b.TBullet = Each TBullet
      b\pos[0] = b\pos[0] + b\speed[0]
      b\pos[1] = b\pos[1] + b\speed[1]
      If time - b\birthtime > 1000
         Delete b
      EndIf
   Next
End Function

Function TBullet_render()
   For b.TBullet = Each TBullet
      Oval b\pos[0]-2,b\pos[1]-2,4,4
   Next
End Function
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Jo0oker

BeitragFr, Jul 04, 2008 10:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich mich nicht irre kannst du das auch gut mit EntityDistance lösen.

lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group