void Suspicious() { switch (suspiciousState) { case SuspiciousState.MovingToSuspiciousPosition: // if (suspiciousPosition.x <= rb.position.x) { // rb.MovePosition(rb.position + new Vector2(lookDirection.x * moveSpeed * Time.fixedDeltaTime, 0)); // if (rb.position.x < suspiciousPosition.x) { // SuspiciousFromMovingToWaiting(); // } // } // if (suspiciousPosition.x >= rb.position.x) { // rb.MovePosition(rb.position + new Vector2(lookDirection.x * moveSpeed * Time.fixedDeltaTime, 0)); // if (rb.position.x > suspiciousPosition.x) { // SuspiciousFromMovingToWaiting(); // } // } rb.MovePosition(rb.position + new Vector2(lookDirection.x * moveSpeed * Time.fixedDeltaTime, 0)); if (Vector2.Distance(rb.position, suspiciousPosition) < .1f) { SuspiciousFromMovingToWaiting(); } break; case SuspiciousState.Waiting: if (suspiciousWaitTime <= 0) { suspiciousWaitTime = startSuspiciousWaitTime; statusIcon.GetComponent <Animator>().SetBool("suspiciousWaiting", false); statusIcon.GetComponent <SpriteRenderer>().color = Color.white; suspiciousState = SuspiciousState.ReturningToPoint; isDistractedByDoppelganger = false; } else { suspiciousWaitTime -= Time.deltaTime; statusIcon.GetComponent <Animator>().SetBool("Suspicious_Permanent", false); statusIcon.GetComponent <SpriteRenderer>().color = new Color(1, 1, 1, ((float)suspiciousWaitTime / (float)startSuspiciousWaitTime)); } break; case SuspiciousState.ReturningToPoint: if (isStandingGuard) { state = State.Patrol; patrolState = PatrolState.Returning; patrolWaitTime = startPatrolWaitTime; } else { state = State.Patrol; patrolState = PatrolState.MovingToNextPoint; patrolWaitTime = startPatrolWaitTime; } break; } }
void BecomeSuspiciousState(Vector2 positionToCheck) { state = State.Suspicious; suspiciousState = SuspiciousState.MovingToSuspiciousPosition; detectMeasure = 0; suspiciousPosition = positionToCheck; statusIcon.GetComponent <SpriteRenderer>().color = Color.white; statusIcon.GetComponent <Animator>().SetBool("patrolWaiting", false); statusIcon.GetComponent <Animator>().SetTrigger("isSuspicious"); statusIcon.GetComponent <Animator>().SetBool("Suspicious_Permanent", true); }
private void InitStates() { istate = new IState[9]; istate[0] = new IdleState(gameObject); istate[1] = new PatrolState(gameObject); istate[2] = new SuspiciousState(gameObject); istate[3] = new DetectionState(gameObject); istate[4] = new AlertState(gameObject); istate[5] = new AttackState(gameObject); istate[6] = new EscapeState(gameObject); istate[7] = new StunState(gameObject); istate[8] = new DeadState(gameObject); }
private void Awake() { chaseState = new ChaseState(this); patrolState = new PatrolState(this); guardState = new GuardState(this); dazedState = new DazedState(this); distractedState = new DistractedState(this); searchingState = new SearchingState(this); suspiciousState = new SuspiciousState(this); koState = new KOState(this); walkState = new WalkState(this); navMeshAgent = GetComponent <NavMeshAgent>(); }
private void Awake() { chaseState = new ChaseState(this); patrolState = new PatrolState(this); guardState = new GuardState(this); dazedState = new DazedState(this); distractedState = new DistractedState(this); searchingState = new SearchingState(this); suspiciousState = new SuspiciousState(this); koState = new KOState(this); walkState = new WalkState(this); pointSearchState = new PointSearchState(this); navMeshAgent = GetComponent<NavMeshAgent>(); player = GameObject.FindGameObjectWithTag("Player"); Path = Pathways[0]; AIPath CheckpointScript = Path.GetComponent<AIPath>(); navPoint = CheckpointScript.getPoints()[0]; currentState = patrolState; //sets the current state NoOcclusionLM = 1 << noOcclusionLayer; NoOcclusionLM = ~NoOcclusionLM; }
public void SuspiciousFromMovingToWaiting() { suspiciousState = SuspiciousState.Waiting; statusIcon.GetComponent <Animator>().SetBool("suspiciousWaiting", true); }