Rauchspur
Übersicht

![]() |
TravisBetreff: Rauchspur |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lange habe ich nach einem Effekt für möglichst realistische Rauchspuren, für Raumschifftriebwerke oder Raketen gesucht. Weil ich leider nichts Gescheites finden konnte, habe ich mich mal selbst drangesetzt und was dabei herausgekommen ist, möchte ich euch nicht vorenhalten.
Zu dem Code wird ein 40x40 Pic einer Grauen Rauchwolke auf schwarzem Hintergrund benötigt. Ich habe dieses Bild und den Code zu einem Archiv zusammengefasst. http://home.t-online.de/home/D.../Rauch.rar(3KB) EDIT vom 18.07.04: Ich habe jetzt noch ein bisschen mehr Speed herausgeholt, indem ich die verbrauchten Sprites nicht mehr lösche und für neue Rauchwolken einfach wiederverwende. So kann ich etwa 300 Sprites mit immerhin noch 300fps darstellen und aktualisieren. [syntax="bb":1:e244e211d6] ; Rauchwolken ; Copyright (C) Juli 2004, Daniel Nobis ; Halten Sie die linke Maustaste gedrückt und bewegen Sie die ; Maus. Sie sehen, wie hinter dem Mauszeiger Rauchwolken entstehen. Graphics3D 800,600,16,2 SetBuffer BackBuffer() Global FPSSEC = MilliSecs(), FPS, FRAMES Global Sprites, Aktiv Global Rauch = LoadTexture("Rauch.png",4) Type Rauch Field x,y,rad,entity,ColorG,status,Timer1 End Type Camera = CreateCamera() ; --- Hauptschleife --- Repeat Cls If MouseDown(1) And MilliSecs()-Timer1 > 1 Then NewRauch(MouseX(),MouseY()) Timer1 = MilliSecs() EndIf UpdateRauch() RenderWorld() Text 0,0, "FPS: " + FPS() Text 0,10, "Sprites: " + sprites + " davon aktiv: " + Aktiv Flip 0 Until KeyHit(1) End ; --- Hauptschleife --- ; --- Rauchwolke erstellen --- Function NewRauch(x,y) If Sprites < 800 Then r.rauch = New rauch r\rad = 1 x = x - r\rad/2 y = y - r\rad/2 r\x = (x*2)-800+r\rad r\y = -(y*2)+600-r\rad r\status = 1 r\entity = CreateSprite() EntityTexture r\entity, Rauch EntityColor r\entity, r\rad*10, 0, 0 ScaleSprite r\entity, r\rad, r\rad EntityAlpha r\entity, .3 PositionEntity r\entity, r\x,r\y,800 Sprites = Sprites + 1 Aktiv = Aktiv + 1 EndIf If Sprites => 800 Then For r.rauch = Each rauch If r\status = 0 Then r\rad = 1 x = x - r\rad/2 y = y - r\rad/2 r\x = (x*2)-800+r\rad r\y = -(y*2)+600-r\rad r\status = 1 EntityTexture r\entity, Rauch EntityColor r\entity, r\rad*10, 0, 0 ScaleSprite r\entity, r\rad, r\rad EntityAlpha r\entity, .2 PositionEntity r\entity, r\x,r\y,800 ShowEntity r\entity Aktiv = Aktiv + 1 Return EndIf Next EndIf End Function ; --- Rauchwolke erstellen --- ; --- Rauchwolken aktualisieren --- Function UpdateRauch() For r.rauch = Each rauch If r\status = 1 Then If MilliSecs()-r\Timer1 > 20 Then r\timer1 = MilliSecs() r\rad = r\rad + 2 If r\rad > 100 Then HideEntity r\entity r\status = 0 Aktiv = Aktiv - 1 EndIf EndIf r\ColorG = 255 - r\rad * 2.5 EntityColor r\entity, r\colorG, r\colorG, r\colorG ScaleSprite r\entity, r\rad, r\rad PositionEntity r\entity, r\x,r\y,800 EndIf Next End Function ; --- Rauchwolken aktualisieren --- ; --- FPS anzeigen --- Function FPS() FRAMES = FRAMES + 1 If MilliSecs() - FPSSEC => 1000 Then FPS = FRAMES FRAMES = 0 FPSSEC = MilliSecs() EndIf Return FPS End Function ; --- FPS anzeigen --- [/syntax:1:e244e211d6] |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
- Zuletzt bearbeitet von Travis am So, Jul 18, 2004 15:24, insgesamt 3-mal bearbeitet
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sieht doch recht gut aus. Jedoch sind da 2 Sachen die mich stören:
-Der Rauch ist zu klein, zu wenig zu sehen. -Das ganze ist zu langsam. Wenn man z.B. 3 Raumschiffe hat, die Rauchspuren ziehen, würde das ganze anfangen zu ruckeln. |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jup, ganz guter Effekt! Bloß das ganze sollte heller bzw. mehr zu sehen sein. | ||
~ Hey Ho Let's Go ~ |
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, man könnte den Alphawert noch ein Stück weiter hochsetzen, damit es heller wird. Ist jetzt ziemlich weit unten.
@ Firstdeathmaker Ich wüsste nicht, was man da noch optimieren könnte. Allerdings ist es für mein Spiel wirklich zu langsam. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kannst es ja SingleSurface machen... | ||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
tjo, mit meiner teilweise auf singlesurface basierenden aepartikelengine kann das von der geschwindigkeit her tatsächlich nicht mithalten ![]() ansonsten wäre echtzeitberechnung noch was tolles... |
||
MrKeks.net |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group