コード例 #1
0
        private void Update()
        {
            if (!Input.GetButtonDown("Fire1") || _guiManager.GetCurrentGuiScreen() != GuiScreen.None)
            {
                return;
            }

            if (!_gunProjectileSpawn)
            {
                Debug.LogError("Gun Projectile Span no set!");
                return;
            }

            _gunProjectileSpawn.Fire();
        }
コード例 #2
0
        private void Shoot()
        {
            RaycastHit hit;

            if (_livingEntity &&
                (!NavMeshAgent.hasPath &&
                 Vector3.Distance(transform.position, TargetTransform.position) <= MeleeDamage ||
                 NavMeshAgent.remainingDistance <= MeleeDistance))
            {
                _livingEntity.Damage(MeleeDamage);
            }
            else if (_gunProjectileSpawn &&
                     NavMeshAgent.remainingDistance <= AttackDistance &&
                     Vector3.Angle(TargetTransform.position - _headTransform.position, _headTransform.forward) <=
                     FoV &&
                     Physics.Linecast(_headTransform.position, TargetTransform.position, out hit) &&
                     hit.transform == TargetTransform)
            {
                _gunProjectileSpawn.Fire();
            }
        }