private void Update() { if (fireball != null) { AnimatorStateInfo animationState = animator.GetCurrentAnimatorStateInfo(0); AnimatorClipInfo[] myAnimatorClip = animator.GetCurrentAnimatorClipInfo(0); if (myAnimatorClip[0].clip.name == "Throw") { float myTime = myAnimatorClip[0].clip.length * animationState.normalizedTime; if (myTime >= 0.9f) { Ray ray = RectTransformUtility.ScreenPointToRay(Camera.main, reticle.position); Vector3 lookAt = ray.origin + Camera.main.transform.forward * 3; fireball.gameObject.SetActive(false); fireball.transform.position = fireball.transform.position + (fireball.transform.right * 1.0f); fireball.transform.SetParent(null); fireball.transform.LookAt(ray.GetPoint(50)); Debug.DrawLine(ray.origin, ray.GetPoint(50)); DamageDealer dealer = fireball.GetComponentInChildren <DamageDealer>(); if (dealer != null) { dealer.overrideDamageSource = true; dealer.damageSource = statsCog.gameObject; } fireball.IsReleased = true; fireball.gameObject.SetActive(true); fireball = null; } } } }