protected override void Cast(Vector3 target) { if (beam == null) { beam = (GameObject)Object.Instantiate(prefab); beam.GetDamageDealer().Owner = statManager.gameObject; } castThisFrame = true; target.y = statManager.transform.position.y; Vector3 delta = target - statManager.transform.position; beam.transform.position = statManager.transform.position + delta.normalized * BeamLength / 2f; beam.transform.rotation = Quaternion.LookRotation(delta); beam.transform.localScale = new Vector3(1f, 1f, BeamLength); beam.GetComponent<DamageDuringContact>().DamagePerSecond = DamagePerSecond; beam.GetComponent<DamageDuringContact>().Ability = this; }