partikel-Alles dreht sich!
Übersicht

![]() |
KddCBetreff: partikel-Alles dreht sich! |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich bin mal wieder n bisschen mit partikeln am rumspielen und kam bis jetzt auch ganz gut klar ![]() Code: [AUSKLAPPEN] Graphics3D 1280,800,32,1
SetBuffer BackBuffer() SeedRnd MilliSecs Type Partikel Field part Field alpha# Field xt# Field yt# Field zt# Field r# End Type light=CreateLight() cam=CreateCamera() PositionEntity cam,0,0,-1 Global Karte=CreateMesh() Surface=CreateSurface(Karte) v0=AddVertex(Surface,0,0,0,0.9,0.5) v1=AddVertex(Surface,0.05,0,0,0.5,0.5) v2=AddVertex(Surface,0,-0.05,0,0.5,0.5) v3=AddVertex(Surface,0.05,-0.05,0,0.5,0.5) AddTriangle(Surface,v0,v1,v2) AddTriangle(Surface,v1,v3,v2) UpdateNormals Karte HideEntity karte ;EntityColor karte,230,210,0 While Not KeyDown(1) If KeyDown(57) Then addqualm() ;PositionEntity Karte,MouseX(),MouseY()*(-1),0 If KeyDown(205) Then MoveEntity karte,0.01,0,0 If KeyDown(203) Then MoveEntity karte,-0.01,0,0 If KeyDown(200) Then MoveEntity karte,0,0.01,0 If KeyDown(208) Then MoveEntity karte,0,-0.01,0 ;p\alpha#=0.4 UpdateWorld UppQualm() RenderWorld Rect EntityX(karte)*650+655,-EntityY(karte)*650+420,6,6,0 Flip ;Cls Wend End Function addqualm() ;For i=0 To 0.1 p.partikel= New partikel p\part=CopyEntity(karte) p\alpha#=Rnd(0.5,0.7) p\xt# = Rnd(-0.003,0.003) p\yt# = Rnd(-0.002,0.002) p\zt# = 0 p\r# = Rnd(-1,1);<------------------------drehen ;Next End Function Function UppQualm() For p.partikel = Each partikel If p\alpha# > 0 Then p\alpha#=p\alpha#-Rnd(0.003,0.004) EntityAlpha P\part,P\alpha# End If RotateMesh p\part, 0,0,p\r#;<----------------------------drehen MoveEntity p\part, Sin(p\xt#)*30,p\yt#,0 If p\alpha# = 0 Then FreeEntity P\part Delete P End If Next End Function könnt ihr mir helfen? Hab schon ziemlich viel ausprobiert und hab auch das gefühl dass das eig ganz simpel sein müsste...aber iwi komm ich nicht drauf Danke und mfg kddc.l3usch |
||
- Zuletzt bearbeitet von KddC am Do, Okt 04, 2007 18:50, insgesamt einmal bearbeitet
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
turnentity mußte benutzen , du benutzt doch CopyEntity ,
wenn du immer das original mesh drehst kein Wunder ... und bei Sprites RotateSprite sprite,angle# ! so wie das jetzt ist könnte Alpha negativ werden, du könntest dir die zweite Prüfung sparen weil es bei <0.1 gelöscht wird If p\alpha# > 0 Then p\alpha#=p\alpha#-Rnd(0.003,0.004) Code: [AUSKLAPPEN] For p.partikel = Each partikel p\alpha#=p\alpha#-Rnd(0.003,0.004) If p\alpha# <= 0 Then FreeEntity P\part Delete P else turnentity p\part, 0,0,p\r#;<----------------------------drehen EntityAlpha P\part,P\alpha# MoveEntity p\part, Sin(p\xt#)*30,p\yt#,0 End If Next |
||
![]() |
KddC |
![]() Antworten mit Zitat ![]() |
---|---|---|
ouh....wusste doch es ist einfach...danke ![]() wieso kann alpha negativ werden wenn alpha kleiner 0.1 ist wird das ding doch gelöscht....außerdem wäre das denn schlimm? Noch ne frage kann mann den Drehpunkt von entitys verändern? weil im moment wird das partikel immer um die ecke oben links gedreht... mfg |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe mir deinen Quelltext angesehen und da war Alpha<0 erstmal
unsinn , würde das Entity nicht danach gelöscht hätte es sichbar werden können . Kann aber auch sein das die Funk. aus <0 wieder 0 macht aber darauf sollte man sich nicht verlassen . Wenn du die Eckpunkte richtig verteilen würdest (um die Mitte!) dann würde es auch um die Mitte rotieren . Setze einfach eine variable ein bei x und y, dann kannste mit + - arbeiten bei den UV(=XY für Texture) Werten ist 0,0 links oben und 1,1 rechts unten . Mit PositionMesh könntest du die Eckpunkte auch einmalig verschieben. |
||
![]() |
KddC |
![]() Antworten mit Zitat ![]() |
---|---|---|
das mit den uv koordinaten hab ich verstanden....kann auch texturen auf diese meshs setzen....aber wie soll mir das bei dem drehpunkt helfen? welches x und welches y meinst du in dem Fall, also bei welchem befehl? sry der nachfrage aber i-wie
verstehe ich das nicht so richtig...... ![]() Mit positionmesh habe ich es bei einem einfachen Quad probiert was dann auch funktioniert hat....bei demProgramm allerdings funktioniert das nicht... mfg und danke für deine Geduld Ps: das mit alpha stimmte....sollte aber eig anders sein..war auch bei meinem vorherigem test so...kp wann und warum ich das geändert habe ![]() |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
0,0,0 ist die Mitte von dem Mesh
darum ist x < 0 links und x >0 rechts oder -x links und x rechts guckst du bei AddVertex PositionMesh bewegt(verändert) alle Eckpunkte und EntityPosition zeigt sie einfach nur an einer Stelle ohne das die Eckpunkte verändert werden . |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group