示例#1
0
        private void Update()
        {
            distanceToPlayer   = Vector3.Distance(player.transform.position, transform.position);
            currentWeaponRange = weaponSystem.GetWeaponConfig().GetMaxAttackRange();

            bool inWeaponCircle = distanceToPlayer <= currentWeaponRange;
            bool inChaseRing    = distanceToPlayer > currentWeaponRange
                                  &&
                                  distanceToPlayer <= chaseRadius;

            bool outsideChaseRing = distanceToPlayer > chaseRadius;

            if (outsideChaseRing)
            {
                StopAttacking();
                character.setSelectedAnimatorForward();
                StartCoroutine(Patrol());
            }
            if (inChaseRing)
            {
                character.setMaximumAnimatorForward();
                StopAttacking();
                StartCoroutine(ChasePlayer());
            }
            if (inWeaponCircle)
            {
                StopAllCoroutines();
                weaponSystem.AttackTarget(player.gameObject);
            }
        }
示例#2
0
        public void Update()
        {
            distanceToPlayer   = Vector3.Distance(player.transform.position, transform.position);
            weaponSystem       = GetComponent <WeaponSystem>();
            currentWeaponRange = weaponSystem.GetWeaponConfig().GetMaxAttackRange();

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

            if (outsideChaseCircle && state != State.patrolling)
            {
                StopAllCoroutines();
                weaponSystem.StopAttacking();
                StartCoroutine(Patrol());
            }
            if (inChaseCircle && state != State.chasing)
            {
                StopAllCoroutines();
                weaponSystem.StopAttacking();
                StartCoroutine(ChasePlayer());
            }
            if (inWeaponCricle && state != State.attacking)
            {
                StopAllCoroutines();
                character.SetDestination(gameObject.transform.position);
                state = State.attacking;
                weaponSystem.AttackTarget(player.gameObject);
            }
        }
示例#3
0
        private void Start()
        {
            player       = GameObject.FindWithTag(Constants.PLAYER_TAG).GetComponent <PlayerControl>();
            character    = GetComponent <Character>();
            weaponSystem = GetComponent <WeaponSystem>();

            currentWeaponRange = weaponSystem.GetWeaponConfig().GetMaxAttackRange();
        }
示例#4
0
        private bool IsTargetInRange(GameObject target)
        {
            float distanceToTarget = (target.transform.position - transform.position).magnitude;

            return(distanceToTarget <= weaponSystem.GetWeaponConfig().GetMaxAttackRange());
        }