public override void CastingTimeCheck() { if (currentAbility != null) { currentCastingTime += Time.deltaTime; if (currentCastingTime > currentAbility.enemyAbilityStats.castTime) { var newA = currentAbility.CreateWorldAbility(unitID); newA.gameObject.layer = 11; if (newA.enemyAbilityStats.behavior == EnemyAbilityStats.Behavior.Projectile) { newA.transform.position = transform.position; Vector3 leadPosition = UtilityService.FirstOrderIntercept(transform.position, new Vector3(), newA.enemyAbilityStats.speed, currentTarget.transform.position, currentTarget.GetComponent <Rigidbody>().velocity); newA.transform.LookAt(leadPosition + new Vector3(0, currentTarget.GetComponent <CapsuleCollider>().height / 2, 0)); } else if (newA.enemyAbilityStats.behavior == EnemyAbilityStats.Behavior.Area_Hit) { newA.transform.position = currentTargetPoint; } currentCastingTime = 0; currentAbility = null; return; } } }