コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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();
                }
            }
        }