Beispiel #1
0
        /// <summary>
        /// Create thrusts backfire effect and attach to target gameobject.
        /// </summary>
        /// <param name="target">Object to add effect to.</param>
        private void AddBackfireEffect(GameObject target)
        {
            // create a particle type of the ship thrust fire effect
            BaseAnimatorProperties prop     = BaseAnimatorProperties.Defaults;
            GameObject             backfire = new GameObject("backfire");

            // create a sphere renderer for the backfire particle
            ShapeRenderer renderer = backfire.AddComponent(new ShapeRenderer(ShapeMeshes.SphereSmooth)) as ShapeRenderer;

            renderer.RenderingQueue = GeonBit.Core.Graphics.RenderingQueue.Effects;

            // add animators, jitter and time-to-live
            backfire.AddComponent(new TimeToLive(0.5f));
            backfire.AddComponent(new SpawnRandomizer(minColor: Color.Red, maxColor: Color.Yellow));
            backfire.AddComponent(new FadeAnimator(prop, 1.0f, 0f, 0.5f));
            backfire.AddComponent(new ScaleAnimator(prop, 0.5f, 0.1f, 0.5f));
            backfire.AddComponent(new MotionAnimator(prop, Vector3.Backward * 15));

            // create particles system for the backfire effect
            GameObject backfireSystem = new GameObject("backfire-system");

            backfireSystem.SceneNode.PositionZ = 1f;
            ParticleSystem system = backfireSystem.AddComponent(new ParticleSystem()) as ParticleSystem;

            // add our backfire particle and set frequency
            system.AddParticleType(new ParticleType(backfire, frequency: 1.0f));
            system.Interval           = 0.025f;
            system.AddParticlesToRoot = true;

            // attach particle system to player
            backfireSystem.Parent = target;
        }
Beispiel #2
0
 /// <summary>
 /// Create the fade animator.
 /// </summary>
 /// <param name="properties">Basic animator properties.</param>
 /// <param name="fromAlpha">Starting alpha.</param>
 /// <param name="toAlpha">Ending alpha.</param>
 /// <param name="fadeTime">How long to transition from starting to ending alpha.</param>
 /// <param name="fadeTimeJitter">If provided, will add random jitter to fading time.</param>
 public FadeAnimator(BaseAnimatorProperties properties, float fromAlpha, float toAlpha, float fadeTime, float fadeTimeJitter = 0f) : base(properties)
 {
     // set basic properties
     FromAlpha       = fromAlpha;
     ToAlpha         = toAlpha;
     FadingTime      = fadeTime;
     _fadeTimeJitter = fadeTimeJitter;
 }
Beispiel #3
0
        /// <summary>
        /// Create explosion effect object prototype.
        /// </summary>
        private void InitExplosions()
        {
            // create an explosion object
            BaseAnimatorProperties prop      = BaseAnimatorProperties.Defaults;
            GameObject             explosion = new GameObject("explosion");

            // create a sphere renderer for the explosion effect
            ShapeRenderer renderer = explosion.AddComponent(new ShapeRenderer(ShapeMeshes.SphereSmooth)) as ShapeRenderer;

            renderer.RenderingQueue = GeonBit.Core.Graphics.RenderingQueue.Effects;

            // add animators, jitter and time-to-live
            explosion.AddComponent(new TimeToLive(0.5f));
            explosion.AddComponent(new SpawnRandomizer(minColor: Color.Red, maxColor: Color.Yellow));
            explosion.AddComponent(new FadeAnimator(prop, 1.0f, 0f, 0.5f));
            explosion.AddComponent(new ScaleAnimator(prop, 0.5f, 2.5f, 0.5f));

            // add sound when explosion spawns
            SoundEffect explosionSound = new SoundEffect("game/explode");

            explosionSound.PlayOnSpawn = true;
            explosion.AddComponent(explosionSound);

            // register as prototype
            Managers.Prototypes.Register(explosion);


            // create particles system for multiple explosions effect
            explosion.AddComponent(new SpawnRandomizer(positionJitter: Vector3.One * 1.5f));
            GameObject     explosionsSet = new GameObject("explosions-set");
            ParticleSystem system        = explosionsSet.AddComponent(new ParticleSystem()) as ParticleSystem;

            // add our explosion particle and set frequency
            system.AddParticleType(new ParticleType(explosion, frequency: 1.0f, frequencyChange: -0.35f));
            system.Interval   = 0.05f;
            system.TimeToLive = 3.0f;
            system.DestroyParentWhenExpired = true;
            system.AddParticlesToRoot       = true;

            // register as prototype
            Managers.Prototypes.Register(explosionsSet);
        }