本文整理汇总了C#中Particle.ApplyForce方法的典型用法代码示例。如果您正苦于以下问题:C# Particle.ApplyForce方法的具体用法?C# Particle.ApplyForce怎么用?C# Particle.ApplyForce使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Particle
的用法示例。
在下文中一共展示了Particle.ApplyForce方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Process
/// <summary>
/// Processes the specified Particle.
/// </summary>
public override void Process(float totalSeconds, float elapsedSeconds, ref Particle particle, object tag)
{
Vector2 deltaGrav;
Vector2.Multiply(ref this.Gravity, elapsedSeconds, out deltaGrav);
particle.ApplyForce(ref deltaGrav);
}
示例2: ProcessActiveParticle
private float _strength; //Gravity strength in pixels per second.
/// <summary>
/// Processes an active particle.
/// </summary>
/// <param name="totalTime">Total game time in whole and fractional seconds.</param>
/// <param name="elapsedTime">Elapsed game time in whole and fractional seconds.</param>
/// <param name="particle">The particle to be updated.</param>
/// <param name="age">The age of the particle in the range of zero to one inclusive.</param>
public override void ProcessActiveParticle(float totalTime, float elapsedTime, ref Particle particle, float age)
{
Vector2 force = this._gravity;
Vector2.Multiply(ref force, this._strength * elapsedTime, out force);
particle.ApplyForce(ref force);
}
示例3: ProcessActiveParticle
private float _coefficient; //The damping coefficient.
/// <summary>
/// Processes an active particle.
/// </summary>
/// <param name="totalTime">Total game time in whole and fractional seconds.</param>
/// <param name="elapsedTime">Elapsed game time in whole and fractional seconds.</param>
/// <param name="particle">The particle to be processed.</param>
/// <param name="age">The age of the particle in the range 0-1.</param>
public override void ProcessActiveParticle(float totalTime, float elapsedTime, ref Particle particle, float age)
{
Vector2 momentum = particle.Momentum;
Vector2.Multiply(ref momentum, this._coefficient, out momentum);
Vector2.Negate(ref momentum, out momentum);
particle.ApplyForce(ref momentum);
}
示例4: Process
/// <summary>
/// Processes the specified Particle.
/// </summary>
public override void Process(float totalSeconds, float elapsedSeconds, ref Particle particle, object tag)
{
Vector2 distance;
// Calculate the distance between the Particle and the gravity well...
Vector2.Subtract(ref this.Position, ref particle.Position, out distance);
// Check to see if the Particle is within range of the gravity well...
if (distance.LengthSquared() < this.RadiusSquared)
{
Vector2 force;
// We can re-use the distance vector, and normalise it as the force vector...
Vector2.Normalize(ref distance, out force);
// Adjust the force vector based on the strength of the gravity well and the time delta...
Vector2.Multiply(ref force, this.Strength * elapsedSeconds, out force);
particle.ApplyForce(ref force);
}
}
示例5: HandleProcessUpdated
/// <summary>
/// When overridden in the derived class, handles processing the <paramref name="particle"/> when
/// it is updated. Only valid if <see cref="ParticleModifier.ProcessOnUpdate"/> is set.
/// </summary>
/// <param name="emitter">The <see cref="ParticleEmitter"/> that the <paramref name="particle"/>
/// came from.</param>
/// <param name="particle">The <see cref="Particle"/> to process.</param>
/// <param name="elapsedTime">The amount of time that has elapsed since the <paramref name="emitter"/>
/// was last updated.</param>
protected override void HandleProcessUpdated(ParticleEmitter emitter, Particle particle, int elapsedTime)
{
// Get the absolute position
Vector2 absolutePosition;
emitter.GetAbsoultePosition(ref _position, out absolutePosition);
// Get the distance from the particle
Vector2 distance;
Vector2.Subtract(ref absolutePosition, ref particle.Position, out distance);
// Check if the particle is in range
if (distance.LengthSquared() >= _radiusSquared)
return;
// Normalize the distance vector to get the force
Vector2 force;
Vector2.Normalize(ref distance, out force);
// Adjust the force by the strength and elapsed time
Vector2.Multiply(ref force, _strength * elapsedTime, out force);
// Apply the force to the particle
particle.ApplyForce(ref force);
}
示例6: ProcessActiveParticle
/// <summary>
/// Processes an active particle.
/// </summary>
/// <param name="totalTime">Total game time in whole and fractional seconds.</param>
/// <param name="elapsedTime">Elapsed game time in whole and fractional seconds.</param>
/// <param name="particle">The particle which is ready to be processed.</param>
/// <param name="age">The age of the particle in the range 0-1.</param>
public override void ProcessActiveParticle(float totalTime, float elapsedTime, ref Particle particle, float age)
{
float distance;
Vector2.DistanceSquared(ref this._position, ref particle.Position, out distance);
if (distance < this._radiusSq)
{
float effect = 1f - (distance / this._radiusSq);
Vector2 force;
Vector2.Subtract(ref this._position, ref particle.Position, out force);
Vector2.Normalize(ref force, out force);
Vector2.Transform(ref force, ref this._rotation, out force);
Vector2.Multiply(ref force, effect * elapsedTime * this._vorticity, out force);
particle.ApplyForce(ref force);
}
}