Example #1
0
        private void Update()
        {
            distanceToPlayer = Vector3.Distance(player.transform.position, transform.position);
            WeaponSystem weaponSystem     = GetComponent <WeaponSystem>();
            bool         inWeaponCircle   = distanceToPlayer <= currentWeaponRange;
            bool         inChaseRing      = distanceToPlayer > currentWeaponRange && distanceToPlayer <= chaseRadius;
            bool         outsideChaseRing = distanceToPlayer > chaseRadius;

            currentWeaponRange = weaponSystem.GetCurrentWeapon().GetMaxAttackRange();
            if (outsideChaseRing)
            {
                StopAllCoroutines();
                weaponSystem.StopAttacking();
                StartCoroutine(Patrol());
            }
            if (inChaseRing)
            {
                StopAllCoroutines();
                weaponSystem.StopAttacking();
                StartCoroutine(ChasePlayer());
            }
            if (inWeaponCircle)
            {
                StopAllCoroutines();
                weaponSystem.AttackTarget(player.gameObject);
                state = State.attacking;
            }
        }
Example #2
0
        void Update()
        {
            distanceToPlayer = Vector3.Distance(player.transform.position, transform.position);
            WeaponSystem weaponSystem = GetComponent <WeaponSystem>(); // No performance issue

            currentWeaponRange = weaponSystem.GetCurrentWeapon().GetMaxAttackRange();

            bool inWeaponRadius     = distanceToPlayer <= currentWeaponRange;
            bool inChaseRadius      = distanceToPlayer > currentWeaponRange && distanceToPlayer <= chaseRadius;
            bool outsideChaseRadius = distanceToPlayer > chaseRadius;

            if (inWeaponRadius)
            {
                StopAllCoroutines();
                state = State.attacking;
                transform.LookAt(player.gameObject.transform);
                weaponSystem.AttackTarget(player.gameObject);
                character.GetNavMeshAgent().Move(Vector3.zero);
                character.GetNavMeshAgent().velocity = Vector3.zero;
            }

            if (outsideChaseRadius)
            {
                StopAllCoroutines();
                //weaponSystem.StopAttacking();
                StartCoroutine(Patrol());
            }

            if (inChaseRadius)
            {
                StopAllCoroutines();
                weaponSystem.StopAttacking();
                StartCoroutine(ChasePlayer());
            }
        }
Example #3
0
        private void Update()
        {
            if (!player)
            {
                return;
            }

            distanceToPlayer   = Vector3.Distance(player.transform.position, transform.position);
            currentWeaponRange = weaponSystem.GetCurrentWeapon().GetMaxAttackRange();

            if (distanceToPlayer > chaseRadious && state != State.patrolling)
            {
                //stop what we'are doing
                StopAllCoroutines();
                //Stop weaponSystem Coroutine.
                // weaponSystem.StopAllCoroutines();
                //start patrolling
                StartCoroutine(Patrol());
            }
            if (distanceToPlayer <= chaseRadious && state != State.chasing)
            {
                //stop what we'are doing
                StopAllCoroutines();
                //weaponSystem.StopAllCoroutines();
                //start chasing
                StartCoroutine(ChasePlayer());
            }
            if (distanceToPlayer <= currentWeaponRange && state != State.attacking)
            {
                //stop what we're doing
                StopAllCoroutines();
                //start attacking
                StartCoroutine(AttackPlayer());
            }
        }
Example #4
0
        void Update()
        {
            WeaponSystem weaponSystem = GetComponent <WeaponSystem>();

            currentWeaponRange = weaponSystem.GetCurrentWeapon().GetMaxAttackRange();

            distanceToPlayer = Vector3.Distance(player.transform.position, transform.position);

            if (distanceToPlayer > chaseRadius && state != State.patrolling)
            {
                StopAllCoroutines();
                StartCoroutine(Patrol());
            }

            if (distanceToPlayer <= chaseRadius && state != State.chasing)
            {
                StopAllCoroutines();
                StartCoroutine(ChasePlayer());
            }

            if (distanceToPlayer <= currentWeaponRange && state != State.attacking)
            {
                StopAllCoroutines();
                state = State.attacking;
                weaponSystem.AttackTarget(player);
            }
        }
Example #5
0
        bool IsTargetInRange(GameObject target)
        {
            updatedTarget = target;
            float distanceToTarget = (target.transform.position - transform.position).magnitude;

            return(distanceToTarget <= weaponSystem.GetCurrentWeapon().GetMaxAttackRange());
        }
        void Update()
        {
            if (Input.GetKeyDown(KeyCode.Y))
            {
                Time.timeScale = 0;
            }

            distanceToPlayer = Vector3.Distance(player.transform.position, transform.position);
            WeaponSystem weaponSystem = GetComponent <WeaponSystem>();

            currrentWeaponRange = weaponSystem.GetCurrentWeapon().GetMaxAttackRange();
            if (distanceToPlayer > chaseRadius && state != State.patrolling)
            {
                StopAllCoroutines();
                StartCoroutine(Patrol());
            }
            if (distanceToPlayer <= chaseRadius && state != State.chasing)
            {
                StopAllCoroutines();
                StartCoroutine(ChasePlayer());
            }
            if (distanceToPlayer <= currrentWeaponRange && state != State.attacking)
            {
                StopAllCoroutines();
                state = State.attacking;
            }
        }
Example #7
0
        bool IsTargetInRange(GameObject target)
        {
            float distanceTotarget = (target.transform.position - transform.position).magnitude;
            bool  isInRange        = distanceTotarget <= weaponSystem.GetCurrentWeapon().GetMaxAttackRange();

            return(isInRange);
        }
Example #8
0
        void Update()
        {
            distanceToPlayer = Vector3.Distance(player.transform.position, transform.position);

            WeaponSystem weaponSystem = GetComponent <WeaponSystem>();

            currentWeaponRange = weaponSystem.GetCurrentWeapon().GetMaxAttackRange();

            bool inWeaponCircle     = distanceToPlayer <= currentWeaponRange;
            bool inChaseCircle      = distanceToPlayer > currentWeaponRange && distanceToPlayer <= chaseRadious;
            bool outsideChaseCircle = distanceToPlayer > chaseRadious;

            if (outsideChaseCircle)
            {
                StopAllCoroutines();
                weaponSystem.StopAttacking();
                StartCoroutine(Patrol());
            }
            if (inChaseCircle)
            {
                StopAllCoroutines();
                weaponSystem.StopAttacking();
                StartCoroutine(ChasePlayer());
            }
            if (inWeaponCircle)
            {
                StopAllCoroutines();

                state = State.attacking;
                //state = State.attacking; si activo deja de funcionar el health del player
                weaponSystem.AttackTarget(player.gameObject);
            }

////////////////////////////////////////////////////
            // if (distanceToPlayer > chaseRadious && state != State.patrolling)
            // {
            //  StopAllCoroutines();
            //  weaponSystem.StopAttacking();
            //  StartCoroutine( Patrol() );
            // }
            // if (distanceToPlayer <= chaseRadious && state != State.chasing)
            // {
            //  StopAllCoroutines();
            //  weaponSystem.StopAttacking();
            //  StartCoroutine(ChasePlayer());
            // }
            // if (distanceToPlayer <= currentWeaponRange && state != State.attacking)
            // {
            //  StopAllCoroutines();
            //  //state = State.attacking; si activo deja de funcionar el health del player
            //  weaponSystem.AttackTarget(player.gameObject);
            // }
///////////////////////////////////////////////////////
        }
Example #9
0
 bool IsTargetInRange(EnemyAI enemy)
 {
     if (enemy)
     {
         float distanceToTarget = (enemy.transform.position - transform.position).magnitude;
         return(distanceToTarget <= weaponSystem.GetCurrentWeapon().GetMaxAttackRange());
     }
     else
     {
         return(false);
     }
 }
Example #10
0
        private bool IsEnemyInRange(GameObject enemy)
        {
            float distanceToEnemy = (enemy.transform.position - transform.position).magnitude;

            if (distanceToEnemy > weaponSystem.GetCurrentWeapon().GetMaxAttackRange())
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
Example #11
0
        private void Update()
        {
            WeaponSystem weaponSystem = GetComponent <WeaponSystem>();

            attackRange = weaponSystem.GetCurrentWeapon().GetMaxAttackRange();

            distanceToTarget = Vector3.Distance(playerControl.transform.position, transform.position);

            bool inWeaponRange     = distanceToTarget <= attackRange;
            bool inChaseRange      = distanceToTarget > attackRange && distanceToTarget <= chaseRadius;
            bool outsideChaseRange = distanceToTarget > chaseRadius;

            if (outsideChaseRange && state != State.patrolling)
            {
                StopAllCoroutines();
                weaponSystem.StopAttacking();
                StartCoroutine(Patrol());
            }
            if (inChaseRange && state != State.chasing)
            {
                StopAllCoroutines();
                weaponSystem.StopAttacking();
                StartCoroutine(ChasePlayer());
            }
            if (inWeaponRange && state != State.attacking)
            {
                StopAllCoroutines();
                state = State.attacking;
                weaponSystem.AttackTarget(playerControl.gameObject);
            }
            if (isFriendly && distanceToTarget <= chaseRadius && state != State.following)
            {
                // follow state // following is moving to a spot right behind the player
            }
            if (health.HealthAsPercentage() <= .05 && state != State.fleeing)
            {
                // flee state
            }
        }
Example #12
0
        void Update()
        {
            WeaponSystem weaponSystem = GetComponent <WeaponSystem>();

            currentWeaponRange = weaponSystem.GetCurrentWeapon().GetMaxAttackRange();
            distanceToPlayer   = Vector3.Distance(player.transform.position, transform.position);

            if (isAlive)
            {
                bool inWeaponRange     = distanceToPlayer <= currentWeaponRange;
                bool inChaseRange      = distanceToPlayer > currentWeaponRange && distanceToPlayer <= chaseRadius;
                bool outsideChaseRange = distanceToPlayer > chaseRadius;

                if (inChaseRange)
                {
                    StopAllCoroutines();
                    weaponSystem.StopAttacking();
                    StartCoroutine(ChasePlayer());
                    character.ReturnAnimationFowardCap();
                }
                else if (inWeaponRange)
                {
                    StopAllCoroutines();
                    state = State.attacking;
                    weaponSystem.AttackTarget(player.gameObject);
                }
                else if (outsideChaseRange && state != State.patrolling)
                {
                    StopAllCoroutines();
                    weaponSystem.StopAttacking();
                    StartCoroutine(Patrol());
                }
            }
            else
            {
                StopAllCoroutines();
            }
        }
Example #13
0
        void Update()
        {
            WeaponSystem weaponSystem = GetComponent <WeaponSystem>();

            currentWeaponRange = weaponSystem.GetCurrentWeapon().GetMaxAttackRange();

            distanceToPlayer = Vector3.Distance(player.transform.position, transform.position);

            //bool playerIsOutOfRangeAndEnemyIsNotPatrolling = distanceToPlayer > chaseRadius && state != State.patrolling;

            bool inWeaponCircle     = distanceToPlayer <= currentWeaponRange;
            bool inChaseCircle      = distanceToPlayer > currentWeaponRange && distanceToPlayer <= chaseRadius;
            bool outsideChaseCircle = distanceToPlayer > chaseRadius;

            if (outsideChaseCircle)
            {
                StopAllCoroutines();
                weaponSystem.StopAttacking();
                StartCoroutine(Patrol());
            }

            //bool playerIsInRangeAndEnemyIsNotChasing = distanceToPlayer <= chaseRadius && state != State.chasing;
            if (inChaseCircle)
            {
                StopAllCoroutines();
                weaponSystem.StopAttacking();
                StartCoroutine(ChasePlayer());
            }

            //bool playerIsInWeaponRangeAndEnenyIsNotAttacking = distanceToPlayer <= currentWeaponRange && state != State.attacking;
            if (inWeaponCircle)
            {
                StopAllCoroutines();
                state = State.attacking;
                weaponSystem.AttackTarget(player.gameObject);
            }
        }
Example #14
0
        // Update is called once per frame
        void Update()
        {
            WeaponSystem weaponSystem = GetComponent <WeaponSystem>();

            currentWeaponRange = weaponSystem.GetCurrentWeapon().AttackRadius();
            distanceToPlayer   = Vector3.Distance(player.transform.position, transform.position);

            if (distanceToPlayer > aggroRadius && state != State.patrolling)
            {
                StopAllCoroutines();
                StartCoroutine(Patrol());
            }
            if (distanceToPlayer <= aggroRadius && state != State.chasing)
            {
                StopAllCoroutines();
                StartCoroutine(ChasePlayer());
            }
            if (distanceToPlayer <= currentWeaponRange && state != State.attacking)
            {
                state = State.attacking;
                StopAllCoroutines();
                StartCoroutine(MoveAndAttack(player.gameObject));
            }
        }
Example #15
0
 void FindTargetsInRange()
 {
     Assert.IsFalse(enemyLayerMask == 0, "Please set enemyLayerMask to the Enemy layer");
     targets = Physics.OverlapSphere(transform.position, weaponSystem.GetCurrentWeapon().GetMaxAttackRange(), enemyLayerMask);
 }
Example #16
0
        private bool IsTargetInRange(GameObject target)
        {
            float distanceToTarget = Vector3.Distance(target.transform.position, transform.position);

            return(distanceToTarget <= weaponSystem.GetCurrentWeapon().AttackRadius());
        }