Einzelne Partikel unabhängig von einander bewegen
Verfasst: 22.09.2015 15:50
Hallo liebes PB Forum,
ich hatte mein Problem schon einmal in der Vergangenheit gelöst.
Doch ich komme nicht mehr auf die logische Lösung.
Wenn ich in eine Richtung Partikel schieße und dann in die andere Richtung schieße bewegen sich alle Partikel die zuvor abgeschossen wurden mit.
Ich will aber das jeder Partikel in die Richtung fliegt in der er abgeschossen wurde und sich unabhängig der anderen verhält.
Wie kann man das denn nochmal lösen.
Hier ist der relevante Code.
Danke und Grüße
Manuel
ich hatte mein Problem schon einmal in der Vergangenheit gelöst.
Doch ich komme nicht mehr auf die logische Lösung.
Wenn ich in eine Richtung Partikel schieße und dann in die andere Richtung schieße bewegen sich alle Partikel die zuvor abgeschossen wurden mit.
Ich will aber das jeder Partikel in die Richtung fliegt in der er abgeschossen wurde und sich unabhängig der anderen verhält.
Wie kann man das denn nochmal lösen.
Hier ist der relevante Code.
Code: Alles auswählen
If Weapon\Is_Shoot = 1
ADDShoot(#SPRITE_PLAYER_SHOOT, 1, player\PositionX+145, player\PositionY-33, 400, Shoot_Act_List()\flightangle)
EndIf
Procedure UpdateMove()
Static OldTime.i
Protected Time.i, Factor.f
If OldTime = 0: OldTime = ElapsedMilliseconds(): EndIf
Time = ElapsedMilliseconds()
Factor = (Time - OldTime ) * 0.001
ForEach Shoot_Act_List()
Shoot_Act_List()\flightangle = Weapon\rotation
Shoot_Act_List()\x - Shoot_Act_List()\speed * Sin( Radian( Shoot_Act_List()\flightangle ) ) * Factor
Shoot_Act_List()\y + Shoot_Act_List()\speed * Cos( Radian( Shoot_Act_List()\flightangle ) ) * Factor
Next
OldTime = ElapsedMilliseconds()
EndProcedure
ForEach Shoot_Act_List()
If Shoot_Act_List()\Sprite_Shoot = #SPRITE_PLAYER_SHOOT And Shoot_Act_List()\ID = 1
RotateSprite(Shoot_Act_List()\Sprite_Shoot, Shoot_Act_List()\flightangle - 180, #PB_Absolute)
DisplayTransparentSprite(Shoot_Act_List()\Sprite_Shoot, Shoot_Act_List()\x, Shoot_Act_List()\y)
EndIf
Next
Procedure ADDShoot(Sprite_Shoot, ID.i, x.i, y.i, speed.i, direction.f)
AddElement(Shoot_Act_List())
With Shoot_Act_List()
\Sprite_Shoot = Sprite_Shoot
\ID = ID
\x = x
\y = y
\speed = speed
\direction = direction
EndWith
EndProcedure
Manuel