private void OnMouseOverWalkable(Vector3 point) { if (Input.GetMouseButton(0)) { currentWalkTarget.transform.position = point; character.SetTarget(currentWalkTarget); } }
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; } }
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(); } }