コード例 #1
0
    IEnumerator LaunchFader(Sprite sprite, AoeEffectData buffData)
    {
        GameObject go       = new GameObject("Fader :D");
        var        renderer = go.AddComponent <SpriteRenderer>();

        renderer.sortingLayerName = "RuneEffects";
        renderer.sprite           = sprite;

        go.transform.position = this.transform.position;
        _aoeStartPoint        = go.transform.position; // debgu

        int   iterationForEffect = buffData.Frames;
        float growAmountPerFrame = (buffData.EndScale - buffData.StartScale) / buffData.Frames;

        go.transform.localScale = new Vector3(buffData.StartScale, buffData.StartScale);

        float t          = 0;
        float tIncrement = 1f / iterationForEffect;

        go.transform.Translate(buffData.StartOffset);

        for (int i = 0; i < iterationForEffect; i++)
        {
            go.transform.localScale = new Vector3(go.transform.localScale.x + growAmountPerFrame, go.transform.localScale.y + growAmountPerFrame);
            go.transform.Rotate(new Vector3(0, 0, buffData.TotalRotation / iterationForEffect));

            if (buffData.FollowsPlayer)
            {
                print(transform.position);
                go.transform.position = transform.position;
            }

            renderer.color = Color.Lerp(Color.white, buffData.EndColor, t);
            t += tIncrement;
            yield return(null);
        }

        Destroy(go);
        _aoeEffectRunning = false; //debug
    }
コード例 #2
0
 public void FireAoeEffect(Sprite sprite, AoeEffectData data, LayerMask mask)
 {
     StartCoroutine(LaunchEffect(sprite, data, mask));
 }
コード例 #3
0
 public void LaunchAoeFader(Sprite sprite, AoeEffectData data)
 {
     StartCoroutine(LaunchFader(sprite, data));
 }
コード例 #4
0
    // private readonly int IterationForEffect = 60;
    IEnumerator LaunchEffect(Sprite sprite, AoeEffectData buffData, LayerMask mask)
    {
        _aoeEffectRunning = true; //debug

        GameObject go       = new GameObject("Jää runiiddi :D / aoe effect");
        var        renderer = go.AddComponent <SpriteRenderer>();

        renderer.sortingLayerName = "RuneEffects";
        renderer.sprite           = sprite;

        go.transform.position = this.transform.position;
        _aoeStartPoint        = go.transform.position; // debgu

        int   iterationForEffect = buffData.Frames;
        float growAmountPerFrame = (buffData.EndScale - buffData.StartScale) / buffData.Frames;

        go.transform.localScale = new Vector3(buffData.StartScale, buffData.StartScale);

        float t          = 0;
        float tIncrement = 1f / iterationForEffect;

        go.transform.Translate(buffData.StartOffset);

        for (int i = 0; i < iterationForEffect; i++)
        {
            go.transform.localScale = new Vector3(go.transform.localScale.x + growAmountPerFrame, go.transform.localScale.y + growAmountPerFrame);
            // go.transform.Translate(buffData.MovementDir * buffData.Speed * Time.deltaTime);

            if (buffData.FollowsPlayer)
            {
                print(transform.position);
                go.transform.position = transform.position;
            }

            go.transform.Rotate(new Vector3(0, 0, buffData.TotalRotation / iterationForEffect));

            if (iterationForEffect % 3 == 0 || iterationForEffect <= 1) // mikä on hyvä applytys aika
            {
                float radius = go.transform.localScale.x / 2f;
                _aoeEffectRadius = radius; // debug
                _aoeStartPoint   = go.transform.position;
                var colliders = Physics2D.CircleCastAll(go.transform.position, radius, new Vector2(0, 0), 0, mask);
                if (colliders != null)
                {
                    foreach (var collider in colliders)
                    {
                        buffData.BuffToApply.Apply(collider.transform.gameObject);
                    }
                }
            }

            renderer.color = Color.Lerp(Color.white, buffData.EndColor, t);
            t += tIncrement;
            yield return(null);
        }

        Destroy(go);

        _aoeEffectRunning = false; //debug
        if (buffData.AfterEffect != null)
        {
            _afterEffects.Add(buffData.AfterEffect);
        }
    }