Esempio n. 1
0
        private void Explode()
        {
            STGSpriteEffect effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect;

            effect.SetSprite("STGEffectAtlas", "TransparentCircle", eBlendMode.SoftAdditive, LayerId.STGNormalEffect, true);
            effect.SetExistDuration(30);
            effect.SetPosition(_curPos);
            effect.SetSize(128, 128);
            effect.ChangeWidthTo(192, 30, InterpolationMode.Linear);
            effect.ChangeHeightTo(192, 30, InterpolationMode.Linear);
            effect.DoFade(30);
            SoundManager.GetInstance().Play("se_explode", 0.1f);
            float        angle     = Random.Range(0f, 360f);
            List <Color> colorList = new List <Color> {
                new Color(1, 0, 0), new Color(0, 1, 0), new Color(0, 0, 1)
            };

            for (int i = 0; i < 12; i++)
            {
                effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect;
                effect.SetSprite("STGReimuAtlas", "ReimuAHSCEffect", eBlendMode.SoftAdditive, LayerId.STGNormalEffect, true);
                effect.SetExistDuration(30);
                effect.SetPosition(_curPos);
                effect.DoStraightMove(Random.Range(4f, 6f), i * 30 + angle);
                int colorIndex = Random.Range(0, 3);
                effect.SetSpriteColor(colorList[colorIndex].r, colorList[colorIndex].g, colorList[colorIndex].b);
                effect.DoFade(30);
                effect.SetSize(128, 128);
                effect.ChangeWidthTo(64, 30, InterpolationMode.Linear);
                effect.ChangeHeightTo(64, 30, InterpolationMode.Linear);
            }
        }
Esempio n. 2
0
 /// <summary>
 /// 魔炮持续时间
 /// </summary>
 public void UpdateState2()
 {
     // 每10帧一个动画
     if (_time % 10 == 0)
     {
         MovementObjectData data = new MovementObjectData();
         data.tf = _movementObjectTfList[_nextMovementIndex];
         data.tf.localPosition = new Vector3(0, -336, -2);
         data.state            = 1;
         data.time             = 0;
         data.duration         = 12;
         _movementDataList.Add(data);
         _movementCount++;
         // 计算下一个需要取的下标
         _nextMovementIndex = (_nextMovementIndex + 1) % MovementObjectCount;
     }
     UpdateSparkWaves();
     // 更新物体碰撞器的位置
     _colliderRect.SetPosition(Global.PlayerPos.x + _posOffset.x, Global.PlayerPos.y + _posOffset.y);
     if (_time >= _duration)
     {
         // 黑底Sprite消失
         _effect.DoFade(20);
         _curState = 3;
         _time     = 0;
         _duration = 30;
         _colliderRect.ClearSelf();
     }
     _time++;
 }
 /// <summary>
 /// 创建生成子弹时候的特效
 /// </summary>
 private void CreateAppearEffect()
 {
     if (_cfg.appearEffectSizeFrom == 0)
     {
         return;
     }
     _appearEffect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect;
     _appearEffect.SetSprite(Consts.STGBulletsAtlasName, _cfg.appearEffectName, _cfg.blendMode, LayerId.EnemyBarrage, true);
     _appearEffect.SetOrderInLayer(10);
     _appearEffect.SetPosition(_curPos.x, _curPos.y);
     _appearEffect.SetScale(_cfg.appearEffectSizeFrom, _cfg.appearEffectSizeFrom);
     //_appearEffect.DoScaleWidth(_cfg.appearEffectSizeTo, AppearEffectExistDuration, InterpolationMode.Linear);
     //_appearEffect.DoScaleHeight(_cfg.appearEffectSizeTo, AppearEffectExistDuration, InterpolationMode.Linear);
     _appearEffect.DoFade(AppearEffectExistDuration);
 }