// Use this for initialization new void OnEnable() { if (!firstTimeActive || InstantiatedByObjectPooler) { base.OnEnable(); weaponHolder = transform.FindChild("Weapon Holder").gameObject; weapon = weaponController.currentWeapon as BomberWeapon; angle = weaponHolder.transform.eulerAngles.x; // prevPosition = target.transform.position; StartCoroutine(UpdatePath()); } else { navMeshAgent.enabled = false; firstTimeActive = false; } }
private IEnumerator attack() { // varDistanceToTarget = futureTargetPosition (); // float force = Mathf.Sqrt (varDistanceToTarget * gravity / (Mathf.Sin (2f * (angle * 360 / (2 * Mathf.PI))))); anim.SetBool("attack", true); yield return(new WaitForSeconds(.8f)); float forcePart1 = varDistanceToTarget * gravity; float forcePart2 = Mathf.Sin(2f * (angle * 2f * Mathf.PI / 360)); float forcePart3 = forcePart1 / forcePart2; float forcePart4 = Mathf.Abs(forcePart3); float forceFinal = Mathf.Sqrt(forcePart4); if (weapon == null) { weapon = weaponController.currentWeapon as BomberWeapon; } weapon.force = forceFinal * 45; weapon.fire(); yield return(null); }