Funken

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Chester

Betreff: Funken

BeitragDo, März 10, 2005 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi@all,

Wie kann ich in B3D eigentlich Funken sprühen lassen?

Mfg
ChEsTeR

PS: Ja, ihr könnt euch sicherlich denken, wozu ich das Brauch Wink
 

Michi

BeitragDo, März 10, 2005 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
gaaaanz kompliziert:
mit Types!
ich hatte da mal was gemacht *Festplattedurchwühl*
Code: [AUSKLAPPEN]
Graphics 800, 600, 16, 1
SetBuffer BackBuffer()

SeedRnd MilliSecs()
MoveMouse 400, 300

Type Partikel
   Field X#
   Field Y#
   Field rot
   Field gruen
   Field blau
   Field X_Ver#
   Field Y_Ver#
   Field LD
End Type

Repeat
Cls

For i=0 To 3
P.Partikel=New Partikel
P\X#=MouseX()
P\Y#=MouseY()
P\rot=Rnd(0, 255)
P\gruen=Rnd(0, 255)
P\blau=Rnd(0, 255)
a=Rnd(0, 360)
P\X_Ver#=Cos(a)
P\Y_Ver#=Sin(a)
P\LD=Rnd(25, 50)
Next

LockBuffer BackBuffer()

For P=Each Partikel
rgb=$FF000000+P\rot*$10000+P\gruen*$100+P\blau
If P\X#>0 And P\X#<800 And P\Y#>0 And P\Y#< 600 Then WritePixelFast P\X#, P\Y#, rgb

P\LD=P\LD-1
P\X#=P\X#+P\X_Ver#
P\Y#=P\Y#+P\Y_Ver#

If P\LD<1 Then Delete P
Next

UnlockBuffer BackBuffer()

If MouseHit(2) Then Delete Each Partikel

Flip
Until KeyHit(1)
End

Das erstellt bunte Punkte am Mauszeiger
[Edit]
Erläuterung:
Das erstellt den Type:
Code: [AUSKLAPPEN]
Type Partikel
   Field X# ;X-Position
   Field Y# ;Y-Position
   Field rot ;rot-Anteil der Farbe
   Field gruen ;Gruen-" "
   Field blau ;Blau- " "
   Field X_Ver# ;X-Bewegung
   Field Y_Ver# ;YBewegung
   Field LD ;"Lebensdauer"
End Type

dann werden halt pro Schleife alle durchgegangen, bewegt, gezeichnet und(gegebenfalls) gelöscht. In der anderen Schleife werden halt pro Hauptschleifen-Durchlauf 3 neue erstellt
[/Edit]
Code: [AUSKLAPPEN]
Graphics3D 800, 600, 16, 1

SeedRnd MilliSecs()

Type Partikel
   Field objekt
   Field X#
   Field Y#
   Field Z#
   Field rot
   Field gruen
   Field blau
   Field X_Ver#
   Field Y_Ver#
   Field Z_Ver#
   Field LD
End Type

Type Partikelemitter
   Field X#
   Field Y#
   Field Z#
   Field pitch1
   Field pitch2
   Field yaw1
   Field yaw2
   Field rot1
   Field rot2
   Field gruen1
   Field gruen2
   Field blau1
   Field blau2
   Field Menge
End Type

Global temppitch1=0
Global temppitch2=0
Global tempyaw1=0
Global tempyaw2=0
Global kuerzer=0

Global PE.Partikelemitter=New Partikelemitter
PE\pitch1=-10
PE\pitch2=10
PE\yaw1=-10
PE\yaw2=10
PE\rot1=0
PE\rot2=64
PE\gruen1=0
PE\gruen2=255
PE\blau1=0
PE\blau2=64
PE\Menge=5

c1=CreateCamera()
c2=CreateCamera()
l=CreateLight(1)
o=LoadSprite( "Partikel.bmp" )
ScaleSprite o, 0.1, 0.1
HideEntity o
PositionEntity c1, 5, 0, 0
TurnEntity c1, 0, 90, 0
PositionEntity c2, 0, 0, -5

CameraViewport c1, 0, 0, 800, 300
CameraViewport c2, 0, 300, 800, 300

Global Nummer=-1

P.Partikel=New Partikel
P\objekt=CopyEntity(o)
EntityAlpha P\objekt, 0

Repeat

For PE=Each Partikelemitter

PE\yaw1=PE\yaw1+1
PE\yaw2=PE\yaw2+1

If PE\yaw1>360 And PE\yaw2>360 Then
   PE\yaw1=PE\yaw1-360
   PE\yaw2=PE\yaw2-360
EndIf

For i=0 To PE\Menge

P.Partikel=New Partikel
P\objekt=CopyEntity(o)
P\X#=PE\X#
P\Y#=PE\Y#
P\Z#=PE\Z#
P\rot=Rnd(PE\rot1, PE\rot2)
P\gruen=Rnd(PE\gruen1, PE\gruen2)
P\blau=Rnd(PE\blau1, PE\blau2)
EntityColor P\objekt, P\rot, P\gruen, P\blau

a1=Rnd(PE\pitch1, PE\pitch2)
a2=Rnd(PE\yaw1, PE\yaw2)

P\Y_Ver#=Sin(a1)*1
XZ_Ver#=Cos(a1)*1
P\Z_Ver#=Cos(a2)*XZ_Ver#
P\X_Ver#=Sin(a2)*XZ_Ver#

Geschw=Rnd(25, 50)

P\X_Ver#=P\X_Ver#*0.0025*Geschw
P\Y_Ver#=P\Y_Ver#*0.0025*Geschw
P\Z_Ver#=P\Z_Ver#*0.0025*Geschw
P\LD=Rnd(25, 50)

Next

Next

For P=Each Partikel

P\X#=P\X#+P\X_Ver#
P\Y#=P\Y#+P\Y_Ver#
P\Z#=P\Z#+P\Z_Ver#
PositionEntity P\objekt, P\X#, P\Y#, P\Z#

P\LD=P\LD-1
If P\LD<1 Then
   FreeEntity P\objekt
   Delete P
EndIf
Next

If KeyDown(200) Then TurnEntity c1, 1, 0, 0
If KeyDown(208) Then TurnEntity c1, -1, 0, 0
If KeyDown(203) Then TurnEntity c1, 0, 1, 0
If KeyDown(205) Then TurnEntity c1, 0, -1, 0
If KeyDown(30) Then MoveEntity c1, 0, 0, 0.1
If KeyDown(44) Then MoveEntity c1, 0, 0, -0.1

PE=First Partikelemitter

For i=0 To Nummer
PE=After PE
Next

If KeyDown(75) Then PE\X#=PE\X#-0.1
If KeyDown(77) Then PE\X#=PE\X#+0.1
If KeyDown(72) Then PE\Y#=PE\Y#+0.1
If KeyDown(80) Then PE\Y#=PE\Y#-0.1
If KeyDown(71) Then PE\Z#=PE\Z#-0.1
If KeyDown(73) Then PE\Z#=PE\Z#+0.1

RenderWorld
UpdateWorld

PE=First partikelemitter

Color 255, 0, 0
Text 10, 10, PE\pitch1
Text 10, 25, PE\pitch2
Text 10, 40, PE\yaw1
Text 10, 55, PE\yaw2

Flip
Until KeyHit(1)
End


und das zeigt einen sich drehenden grünen "Triebwerksstrahl" aus zwei Perspektiven.
(Das sind alles Übungsprogramme, die ich geschrieben habe, um mich mit Types vertraut zu machen)
Lernen kannst du das ganze am besten hier:
http://www.blitzbase.de/tutorials/shadow_1.htm
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968
Code: [AUSKLAPPEN]

   __
<_/__\_> <--- die Wayne-Zeichnung
  • Zuletzt bearbeitet von Michi am Do, März 10, 2005 21:13, insgesamt einmal bearbeitet

Chester

BeitragDo, März 10, 2005 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx für die schnelle Antowrt, aber wie hat das Bild "Partikel.bmp" ausgesehen?

Spikespine

BeitragDo, März 10, 2005 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich schätz mal klein und gelb Smile
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
 

Michi

BeitragDo, März 10, 2005 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
oh, sorry
So:
Code: [AUSKLAPPEN]
Global Partikel=CreateImage(32, 32)
SetBuffer ImageBuffer(Partikel)
ClsColor 0, 0, 0
Cls
Color 255, 255, 255
Oval 0, 0, 32, 32
SaveBuffer(ImageBuffer(Partikel), "C:/Partikel.bmp")
End
8)

Ich hab oben übrigens noch ein bissl erläutert
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968
Code: [AUSKLAPPEN]

   __
<_/__\_> <--- die Wayne-Zeichnung

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group