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; }
public void ReturnCircle(CircleEffect c) { _stack_CircleEffect.Push(c); if (c.gameObject.activeSelf) { c.gameObject.SetActive(false); } }
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); } }
public CircleEffect GetCircleEffect() { if (_stack_CircleEffect.Count == 0) { MakeCircle(1); } CircleEffect circleEffect = _stack_CircleEffect.Pop(); return(circleEffect); }
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); } }
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); }