コード例 #1
0
ファイル: Mine.cs プロジェクト: Slownite/spicerunner
        void Update()
        {
            if (_state == 0)
            {
                Loop("Idle", spriteRenderer);

                var closest = _GetClosest();

                if (closest && Vector3.Distance(closest.transform.position, transform.position) < armedDistance)
                {
                    _state = 1;
                }
            }
            else if (_state == 1)
            {
                var playing = Once("Armed", spriteRenderer);

                if (playing == 0)
                {
                    EmitterGroup.Play("Explosion 1", transform.position, 1, spriteRenderer.sortingOrder);

                    _Shrapnel();

                    Destroy(gameObject);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Creates an emitter and assigns it to the specified originating time consistency check group such
        /// that all streams in any given group will contain post messages with strictly monotonically increasing
        /// originating times.
        /// </summary>
        /// <typeparam name="T">The type of the output stream.</typeparam>
        /// <param name="pipeline">The pipeline in which this component was created.</param>
        /// <param name="name">The name of the stream.</param>
        /// <param name="consistencyCheckGroup">The group in which to create the stream.</param>
        /// <returns>The newly created emitter for the stream.</returns>
        private Emitter <T> CreateEmitterInGroup <T>(Pipeline pipeline, string name, EmitterGroup consistencyCheckGroup)
        {
            var emitter = pipeline.CreateEmitter <T>(this, name);

            this.originatingTimeConsistencyCheckGroup[emitter] = consistencyCheckGroup;
            return(emitter);
        }
コード例 #3
0
ファイル: WeaponSystem.cs プロジェクト: Slownite/spicerunner
        public override void OnCollision(SpriteColliderBase collider)
        {
            if (collider.name == "Pickup Shield")
            {
                AddShield();

                collider.Destroy();
            }
            else if (collider.name == "Pickup Bullets")
            {
                frontCannon.count += upgradeSettings.frontCannon;

                collider.Destroy();
            }
            else if (collider.name == "Pickup Phaser" && phaser)
            {
                phaser.count += upgradeSettings.phaser;

                collider.Destroy();
            }
            else if (collider.name == "Pickup Laser" && laser)
            {
                laser.timer.count += upgradeSettings.laser;

                collider.Destroy();
            }
            else if (collider.name == "Pickup Nuke")
            {
                Nukeable.Nuke();

                EmitterGroup.Play("Nuke", default);

                collider.Destroy();
            }
        }
コード例 #4
0
    private void RefreshGroups()
    {
        if (Groups == null || Groups.Length != GroupCount)
        {
            Groups = new EmitterGroup[GroupCount];
            Vector2 direction = Direction;
            float   rotation  = 0;

            for (int n = 0; n < Groups.Length; n++)
            {
                Groups[n] = new EmitterGroup(Rotate(direction, rotation).normalized, SpokeCount, SpokeSpacing);
                rotation += 360 / Groups.Length;
            }
        }
    }
コード例 #5
0
        public override void UpdateEmitterGroup(GameTime time, EmitterGroup group)
        {
            MouseState state = Mouse.GetState();

            group.Position.X = (float)state.X;
            group.Position.Y = (float)state.Y;

            if (_click)
            {
                if (state.LeftButton == ButtonState.Pressed)
                {
                    group.Trigger();
                }
            }
        }
コード例 #6
0
    private void RefreshGroups()
    {
        if (GroupCount > 10)
        {
            Debug.Log("Max Group Count is set to 10.  You attempted to set it to " + GroupCount.ToString() + ".");
            return;
        }

        if (Groups == null || LastGroupCountPoll != GroupCount)
        {
            float rotation = 0;
            for (int n = 0; n < Groups.Length; n++)
            {
                if (n < GroupCount && Groups[n] == null)
                {
                    Groups[n] = new EmitterGroup(Rotate(Direction, rotation).normalized, SpokeCount, SpokeSpacing);
                }
                else if (n < GroupCount)
                {
                    Groups[n].Direction    = Rotate(Direction, rotation).normalized;
                    Groups[n].SpokeCount   = SpokeCount;
                    Groups[n].SpokeSpacing = SpokeSpacing;
                }
                else
                {
                    //n is greater than GroupCount -- ensure we clear the rest of the buffer
                    Groups[n] = null;
                }
                rotation += 360 / GroupCount;
            }
            LastGroupCountPoll = GroupCount;
        }
        else if (RotationSpeed == 0)
        {
            float rotation = 0;
            // If rotation speed is locked, then allow to update Direction of groups
            for (int n = 0; n < Groups.Length; n++)
            {
                if (Groups[n] != null)
                {
                    Groups[n].Direction = Rotate(Direction, rotation).normalized;
                }
                rotation += 360 / GroupCount;
            }
        }
    }
コード例 #7
0
            public void Play(CollisionData a, CollisionData b)
            {
                if (a == null)
                {
                    return;
                }

                var group = EmitterGroup.Get(emitterGroupId);

                if (group == null)
                {
                    return;
                }

                var scale    = emitterGroupScale;
                var layer    = layerSettings.value;
                var position = a.transform.position;

                if (group.size > 0)
                {
                    scale *= Mathf.Max(a.spriteRenderer.sprite.rect.size.x, a.spriteRenderer.sprite.rect.size.y) / group.size;
                }

                scale *= Mathf.Max(a.transform.localScale.x, a.transform.localScale.y);

                if (layerSettings.mode == LayerSettings.Mode.inherit)
                {
                    layer += a.spriteRenderer.sortingOrder;
                }
                else if (layerSettings.mode == LayerSettings.Mode.target && b && b.spriteRenderer)
                {
                    layer += b.spriteRenderer.sortingOrder;
                }

                group.Play(position, scale, layer);
            }
コード例 #8
0
ファイル: RocketSmoke.cs プロジェクト: Slownite/spicerunner
 void Update()
 {
     EmitterGroup.Play(emitterGroupId, transform.position, emitterGroupSize, orderInLayer);
 }
コード例 #9
0
 //======================================================[ Constructors & Methods ]
 public virtual void UpdateEmitterGroup(GameTime time, EmitterGroup group) { }