コード例 #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);
            }
        }
コード例 #2
0
    public static int SpriteEffectChangeHeightTo(ILuaState luaState)
    {
        STGSpriteEffect   effect    = luaState.ToUserData(-4) as STGSpriteEffect;
        float             toHeight  = (float)luaState.ToNumber(-3);
        int               duration  = luaState.ToInteger(-2);
        InterpolationMode scaleMode = (InterpolationMode)luaState.ToInteger(-1);

        effect.ChangeHeightTo(toHeight, duration, scaleMode);
        return(0);
    }
コード例 #3
0
    public override void Start()
    {
        _masterSparkObject = ResourceManager.GetInstance().GetPrefab("Prefab/Character/MarisaA", "MasterSpark");
        UIManager.GetInstance().AddGoToLayer(_masterSparkObject, LayerId.PlayerBarage);
        _masterSparkTf = _masterSparkObject.transform;
        Vector2 playerPos = Global.PlayerPos;
        Vector3 pos       = new Vector3(playerPos.x + _posOffset.x, playerPos.y + _posOffset.y, MasterSparkPosZ);

        _masterSparkTf.localPosition = pos;
        Transform tf;

        for (int i = 0; i < MovementObjectCount; i++)
        {
            tf = _masterSparkTf.Find("SparkWave" + i);
            _movementObjectTfList.Add(tf);
        }
        _sparkContainerTf = _masterSparkTf.Find("SparkContainer");
        _movementBodyTf   = _sparkContainerTf.Find("MovementBody");
        // 黑底
        _effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.SpriteEffect) as STGSpriteEffect;
        _effect.SetSprite("ShapeAtlas", "ShapeCircle", eBlendMode.Normal, LayerId.STGBottomEffect, false);
        _effect.SetSize(0, 0);
        _effect.SetSpriteColor(0, 0, 0, 1);
        _effect.ChangeWidthTo(1024, 50, InterpolationMode.EaseInQuad);
        _effect.ChangeHeightTo(1024, 50, InterpolationMode.EaseInQuad);
        _effect.SetPosition(playerPos.x, playerPos.y);
        // 基础属性
        _curState = 1;
        _time     = 0;
        _duration = 30;
        _isFinish = false;
        // 震动
        ShakeEffect shakeEffect = EffectsManager.GetInstance().CreateEffectByType(EffectType.ShakeEffect) as ShakeEffect;

        shakeEffect.DoShake(0, 270, 3, 3f, 1.5f, 5);
        // 音效
        SoundManager.GetInstance().Play("se_masterspark", 0.1f, false, true);
    }
コード例 #4
0
    protected void SetSpriteEffectParas(STGSpriteEffect effect, float[] paras)
    {
        if (paras.Length == 0)
        {
            return;
        }
        switch ((int)paras[0])
        {
        // 设置位置,参数为增量
        case 1:
        {
            float dx      = paras[1];
            float offsetX = paras[2];
            float dy      = paras[3];
            float offsetY = paras[4];
            if (offsetX != 0)
            {
                dx += Random.Range(-offsetX, offsetX);
            }
            if (offsetY != 0)
            {
                dy += Random.Range(-offsetY, offsetY);
            }
            float sin  = Mathf.Sin(_curRotation * Mathf.Deg2Rad);
            float cos  = Mathf.Cos(_curRotation * Mathf.Deg2Rad);
            float relX = cos * dx - sin * dy;
            float relY = sin * dx + cos * dy;
            effect.SetPosition(_hitPos.x + relX, _hitPos.y + relY);
            break;
        }

        // 设置位置,参数为绝对位置
        case 2:
        {
            float posX    = paras[1];
            float offsetX = paras[2];
            float posY    = paras[3];
            float offsetY = paras[4];
            if (offsetX != 0)
            {
                posX += Random.Range(-offsetX, offsetX);
            }
            if (offsetY != 0)
            {
                posY += Random.Range(-offsetY, offsetY);
            }
            effect.SetPosition(posX, posY);
            break;
        }

        // 设置速度,v,dAngle,acce
        // 即速度,与当前速度方向的差值,加速度
        // dAngle为0则表示当前速度方向
        case 3:
        {
            float velocity = paras[1];
            float angle    = _curRotation + paras[2];
            float acce     = paras[3];
            effect.DoStraightMove(velocity, angle);
            effect.DoAcceleration(acce, angle);
            break;
        }

        // 设置速度,v,angle,acce
        // 即速度,速度方向,加速度
        case 4:
        {
            float velocity = paras[1];
            float angle    = paras[2];
            float acce     = paras[3];
            effect.DoStraightMove(velocity, angle);
            effect.DoAcceleration(acce, angle);
            break;
        }

        // 图像旋转角度
        // dRotationAngle,与当前子弹速度方向的差值
        case 5:
        {
            float angle = _curRotation + paras[1];
            effect.SetRotation(angle);
            break;
        }

        // 图像旋转角度
        // angle,指定角度
        case 6:
        {
            float angle = paras[1];
            effect.SetRotation(angle);
            break;
        }

        // 旋转
        // omega,角速度
        case 7:
        {
            float omega = paras[1];
            effect.DoRotation(omega, -1);
            break;
        }

        // orderInLayer
        case 9:
        {
            int orderInLayer = (int)paras[1];
            effect.SetOrderInLayer(orderInLayer);
            break;
        }

        // 设置alpha
        case 10:
        {
            float alpha = paras[1];
            effect.SetSpriteAlpha(alpha);
            break;
        }

        // 透明度渐变
        // toAlpha,duration
        case 11:
        {
            float toAlpha  = paras[1];
            int   duration = (int)paras[2];
            effect.DoTweenAlpha(toAlpha, duration);
            break;
        }

        // 设置颜色
        case 12:
        {
            float r = paras[1];
            float g = paras[2];
            float b = paras[3];
            effect.SetSpriteColor(r, g, b);
            break;
        }

        // 设置带alpha的颜色
        case 13:
        {
            float r      = paras[1];
            float g      = paras[2];
            float b      = paras[3];
            float aValue = paras[4];
            effect.SetSpriteColor(r, g, b, aValue);
            break;
        }

        // 设置缩放
        // scaleX,scaleY
        case 15:
        {
            float scaleX = paras[1];
            float scaleY = paras[2];
            effect.SetScale(scaleX, scaleY);
            break;
        }

        // 设置scaleX缩放动画
        // toScaleX duration
        case 16:
        {
            float toScaleX = paras[1];
            int   duration = (int)paras[2];
            effect.ChangeWidthTo(toScaleX, duration, InterpolationMode.Linear);
            break;
        }

        // 设置scaleY缩放动画
        // toScaleY duration
        case 17:
        {
            float toScaleY = paras[1];
            int   duration = (int)paras[2];
            effect.ChangeHeightTo(toScaleY, duration, InterpolationMode.Linear);
            break;
        }

        // 持续时间
        case 30:
        {
            int duration = (int)paras[1];
            effect.SetExistDuration(duration);
            break;
        }
        }
    }