Partikelobjekt: Unterschied zwischen den Versionen

Aus AquaSoft Wiki
Zur Navigation springenZur Suche springen
Zeile 42: Zeile 42:
  
 
Einem Partikelsystem werden folgende [[IParticleRangeValue|RangeValues]] gegeben:
 
Einem Partikelsystem werden folgende [[IParticleRangeValue|RangeValues]] gegeben:
* [[InitialSize]] zwischen 10 und 20.
+
* InitialSize zwischen 10 und 20.
* [[Size]] zwischen 50 und 100 ab 0ms und 0 und 50 ab 1000ms
+
* Size zwischen 50 und 100 ab 0ms und 0 und 50 ab 1000ms
  
 
Partikel 1 bekommt zufällig eine Größe zwischen 10 und 20, zB. 15. Der Size-Wert modifiziert diesen Initialwert, in dem Fall prozentual. Das heißt das Partikel ist zwischen 50% * 15 und 100% * 15 groß ab Sekunde 0 seiner Lebenszeit. Der genaue Wert wird durch die zufällig gewählte Wichtung ermittelt, sagen wir 50%. Die Wichtung legt also die Mitte des Bereichs fest. Demnach ist die Wichtung 75%, also die Mitte zwischen 50 und 100. Daher hat der Partikel zum Zeitpunkt 0ms (also dem Zeitpunkt seines Emittierens) die Größe 75% * 15 = 11,25.
 
Partikel 1 bekommt zufällig eine Größe zwischen 10 und 20, zB. 15. Der Size-Wert modifiziert diesen Initialwert, in dem Fall prozentual. Das heißt das Partikel ist zwischen 50% * 15 und 100% * 15 groß ab Sekunde 0 seiner Lebenszeit. Der genaue Wert wird durch die zufällig gewählte Wichtung ermittelt, sagen wir 50%. Die Wichtung legt also die Mitte des Bereichs fest. Demnach ist die Wichtung 75%, also die Mitte zwischen 50 und 100. Daher hat der Partikel zum Zeitpunkt 0ms (also dem Zeitpunkt seines Emittierens) die Größe 75% * 15 = 11,25.

Version vom 23. Juni 2014, 13:52 Uhr

Das Partikelobjekt ist vom Typ IParticle und leitet von ISlideShowObject ab. Mit diesem Objekt kann man Partikeleffekte erstellen.

 IParticle inherits from ISlideShowObject
   function InitialSpeed: IParticleRangeValue  
   function Speed: IParticleRangeValue 
   function InitialDirection: IParticleVectorRangeValue 
   function Direction: IParticleVectorRangeValue 
   function InitialSize: IParticleRangeValue 
   function Size: IParticleRangeValue 
   function InitialRotation: IParticleVectorRangeValue 
   function Rotation: IParticleVectorRangeValue 
   function InitialRotationFrequency: IParticleVectorRangeValue 
   function RotationFrequency: IParticleVectorRangeValue 
   property Move: TParticleMove 
   function InitialMoveStrength: IParticleVectorRangeValue 
   function MoveStrength: IParticleVectorRangeValue 
   function InitialMoveSineFrequency: IParticleRangeValue 
   function MoveSineFrequency: IParticleRangeValue
   function MaxAge: IParticleRangeValue 
   function ParticlesPerSecond: IParticleRangeValue 
   function EmitterSpread: IParticleRangeValue
   property SpriteAnimation: TParticleSpriteAnimation 
   function SpriteAnimationFrequency: IParticleRangeValue
   property Filename: IFilename 
   property Clipping: Boolean 
   property PreWarmTime: Integer 
   property Emitter: TParticleEmitter
   property Options: TParticleOptions
   property Environment: TParticleEnvironment
   property Seed: Int64  
 end;

Beispiel

Einem Partikelsystem werden folgende RangeValues gegeben:

  • InitialSize zwischen 10 und 20.
  • Size zwischen 50 und 100 ab 0ms und 0 und 50 ab 1000ms

Partikel 1 bekommt zufällig eine Größe zwischen 10 und 20, zB. 15. Der Size-Wert modifiziert diesen Initialwert, in dem Fall prozentual. Das heißt das Partikel ist zwischen 50% * 15 und 100% * 15 groß ab Sekunde 0 seiner Lebenszeit. Der genaue Wert wird durch die zufällig gewählte Wichtung ermittelt, sagen wir 50%. Die Wichtung legt also die Mitte des Bereichs fest. Demnach ist die Wichtung 75%, also die Mitte zwischen 50 und 100. Daher hat der Partikel zum Zeitpunkt 0ms (also dem Zeitpunkt seines Emittierens) die Größe 75% * 15 = 11,25. Der Size-Wert ändert sich über die Zeit. Allerdings bleibt die Wichtung pro Partikel gleich. Der Size-Wert sagt, dass die Partikel bei Sekunde 1 nur noch zwischen 0 und 50% des Initialwertes groß sind. Durch die Wichtung von 50% ergibt sich ein Size-Wert von 25%, also der Mitte zwischen 0 und 50%. Daher hat das Partikel zum Zeitpunkt 1000ms die Größe 25% * 15 = 3,75.

Für Partikel 2 wird eine neue Initialgröße vergeben (deren Bereich sich über die Zeit natürlich auch verändern kann). Ebenso wird eine neue Wichtung ermittelt, zB. Initialgröße von 12 und einer Wichtung von 100%. Demnach ist das Partikel 2 zum Zeitpunkt 0ms 12 Einheiten groß und nach einer Sekunde nur noch 6.

Die unterschiedlichen Werte zu unterschiedlichen Zeitpunkten werden interpoliert.

 var Particle := SlideShowObject as IParticle;
 Particle.InitialSize.SetValue(0, 0, 10);
 Particle.InitialSize.SetValue(1, 0, 20);
 Particle.Size.SetValue(0, 0, 50);
 Particle.Size.SetValue(1, 0, 100);
 Particle.Size.SetValue(0, 1000, 0);
 Particle.Size.SetValue(1, 1000, 50);