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(); } }
public void AttackRanged() { if (!Input.GetMouseButtonDown(0)) { return; } RaycastHit hitInfo; var ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray.origin, ray.direction, out hitInfo)) { var npc = hitInfo.collider.gameObject.transform.parent.GetComponent <NpcMainScript>(); if (npc != null) { NavMeshController.LookAt(transform, npc.transform.position); animatorController.OnAttackRanged(); } } }