Esempio n. 1
0
 private void OnMouseOverWalkable(Vector3 point)
 {
     if (Input.GetMouseButton(0))
     {
         currentWalkTarget.transform.position = point;
         character.SetTarget(currentWalkTarget);
     }
 }
Esempio n. 2
0
        private void Update()
        {
            if (!Health.Alive)
            {
                return;
            }

            float distanceToPlayer = Vector3.Distance(transform.position, player.transform.position);
            var   playerInRange    = weaponSystem.IsInRange(player.transform.position);

            if (OutOfCombat && distanceToPlayer <= chaseRadius)
            {
                if (patrolCoroutine != null)
                {
                    StopCoroutine(patrolCoroutine);
                    patrolCoroutine = null;
                }
                character.AnimatorForwardMultiplier = 1f;
                state = States.Chasing;
                character.SetTarget(player.transform);
                return;
            }
            if (state == States.Chasing && playerInRange && player.Health.Alive)
            {
                state = States.Attacking;
                weaponSystem.StartAttacking(player.Health);
                return;
            }
            if (state == States.Attacking && !playerInRange ||
                state == States.Attacking && !player.Health.Alive)
            {
                state = States.Chasing;
                weaponSystem.StopAttacking();
                return;
            }
            if (state == States.Chasing && distanceToPlayer > chaseRadius)
            {
                TransitionOutOfCombat();
                return;
            }
            if (state == States.Patroling)
            {
                Patrol();
                return;
            }
        }
Esempio n. 3
0
        private void Start()
        {
            character = GetComponent <Character>();
            Health    = GetComponent <Health>();
            Health.onDeathListeners += OnDeath;
            player             = FindObjectOfType <Player>();
            weaponSystem       = GetComponent <WeaponSystem>();
            currentWeaponRange = weaponSystem.CurrentWepaon.GetAttackRange();
            originalPosition   = transform.position;

            if (patrolPath)
            {
                iterator = patrolPath.GetNewIterator();
                state    = States.Patroling;
                character.SetTarget(patrolPath.GetFirstWaypoint());
                Patrol();
            }
        }