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();
 }
Exemple #3
0
        public IEnumerator DoDamage(ICombatTarget target, float delay)
        {
            yield return(new WaitForSecondsRealtime(delay));

            target.TakeDamage(this);
        }
Exemple #4
0
 public void AttackTarget(ICombatTarget target)
 {
     StartCoroutine(DoDamage(target, hitDelaySeconds));
 }
 public void AttackTarget(ICombatTarget target)
 {
     animatorController.OnAttackMelee();
     StartCoroutine(DoDamage(target, 0.1f));
 }