private IEnumerator AttackRanged(ICombatTarget target) { var position = _hit.transform.position; NavMeshController.LookAt(transform, position - _myPosition); _animatorController.OnAttackRanged(); (_ownerObject as ICombatAggressor)?.AttackTarget(target); yield return(new WaitForSeconds(.4f)); var instance = Instantiate((_rangedWeapon.item as ThrowingWeaponItem)?.weaponPrefab, throwingPoint.transform.position, instanceAngles); instance.transform.parent = throwingPoint.transform; var instanceRigidbody = instance.GetComponent <Rigidbody>(); instanceRigidbody.isKinematic = false; instanceRigidbody.AddForce((position - _myPosition).normalized * projectileSpeed, ForceMode.Impulse); _rangedWeapon.ReduceAmount(1); if (_rangedWeapon.amount == 0) { _rangedWeapon.item = null; PlayerMainScript.MyPlayer.UnequipWeapon(); } }
void GetPlayerInfo(RaycastHit2D hit) { state = BaseEnemyState.MovingToPlayer; player = hit.collider.gameObject; target = player.GetComponent <PlayerActions>(); playerBoxCollider2D = hit.collider.GetComponent <BoxCollider2D>(); MoveToPlayer(); }
public IEnumerator DoDamage(ICombatTarget target, float delay) { yield return(new WaitForSecondsRealtime(delay)); target.TakeDamage(this); }
public void AttackTarget(ICombatTarget target) { StartCoroutine(DoDamage(target, hitDelaySeconds)); }
public void AttackTarget(ICombatTarget target) { animatorController.OnAttackMelee(); StartCoroutine(DoDamage(target, 0.1f)); }