Ejemplo n.º 1
0
            public override void Draw(IDrawDevice device)
            {
                if (gameobj == null)
                {
                    return;
                }

                float timeMult = Time.TimeMult;

                for (int j = 0; j < circleEffectData.Length; j++)
                {
                    ref CircleEffect circle = ref circleEffectData[j];
                    if (circle.Alpha <= 0f)
                    {
                        continue;
                    }

                    int segmentNum = MathF.Clamp(MathF.RoundToInt(MathF.Pow(circle.Radius, 0.65f) * 2.5f), 4, 32);

                    float angle = 0.0f;
                    for (int i = 0; i < segmentNum; i++)
                    {
                        vertices[i].Pos.X = circle.Pos.X + (float)Math.Sin(angle) * circle.Radius;
                        vertices[i].Pos.Y = circle.Pos.Y - (float)Math.Cos(angle) * circle.Radius;
                        vertices[i].Pos.Z = circle.Pos.Z - 10f;
                        vertices[i].Color = new ColorRgba(1f, circle.Alpha);
                        angle            += (MathF.TwoPi / segmentNum);
                    }

                    device.AddVertices(material, VertexMode.LineLoop, vertices, 0, segmentNum);

                    circle.Radius -= timeMult * 0.8f;
                    circle.Alpha  -= timeMult * 0.03f;
                }
Ejemplo n.º 2
0
    public void ReturnCircle(CircleEffect c)
    {
        _stack_CircleEffect.Push(c);

        if (c.gameObject.activeSelf)
        {
            c.gameObject.SetActive(false);
        }
    }
Ejemplo n.º 3
0
 private void MakeCircle(int count)
 {
     for (int i = 0; i < count; i++)
     {
         CircleEffect newCircleEffect = Instantiate(_effect_Circle);
         _stack_CircleEffect.Push(newCircleEffect);
         newCircleEffect.transform.SetParent(circleParent);
         newCircleEffect.gameObject.SetActive(false);
     }
 }
Ejemplo n.º 4
0
    public CircleEffect GetCircleEffect()
    {
        if (_stack_CircleEffect.Count == 0)
        {
            MakeCircle(1);
        }

        CircleEffect circleEffect = _stack_CircleEffect.Pop();

        return(circleEffect);
    }
Ejemplo n.º 5
0
    public override void SkillAttack(Enemy e, Bullet b)
    {
        CircleEffect ce = ObjectPoolManager.instance.GetCircleEffect();

        ce.transform.position = e.transform.position;

        int layerMask = 1 << LayerMask.NameToLayer("Enemy");

        Collider2D[] enemys = Physics2D.OverlapCircleAll(e.transform.position, 1f, layerMask);

        int len = enemys.Length;

        for (int i = 0; i < len; i++)
        {
            enemys[i].GetComponent <Enemy>().Hit(damage + UpgradeManager.instance.redDiceUpgrade);
        }
    }
Ejemplo n.º 6
0
    void SpawnCircle(Vector2 position)
    {
        Vector3 targetPos = position;

        targetPos.z = -1;

        CircleEffect f = Instantiate(circle);

        f.transform.position = targetPos;

        radiusDiff = maxRadius - minRadius;
        widthDiff  = maxWidthPercent - minWidthPercent;
        timeDiff   = maxTime - minTime;

        float circleRadius = minRadius + radiusDiff * EZEasings.SmoothStart3(percent);

        Debug.Log(radiusDiff * EZEasings.SmoothStart3(percent));
        float lineWidth = minWidthPercent + widthDiff * EZEasings.SmoothStart3(percent);
        float duration  = minTime + timeDiff * EZEasings.SmoothStart3(percent);

        f.TriggerCircle(circleRadius, lineWidth, myColor, duration, true);
    }