private void checkState() { switch (this.state) { case State.Patrol: playerDetected = checkSight(); if (playerDetected) { patrol.stopState(); chase.startState(playerDetected); setState(State.Chasing); chaseTimer = chaseTime; break; } playerDetected = checkHear(); if (playerDetected) { patrol.stopState(); alert.startState(playerDetected); setState(State.Alert); alertTimer = alertTime; } break; case State.Alert: playerDetected = checkSight(); if (playerDetected) { alert.stopState(); chase.startState(playerDetected); setState(State.Chasing); chaseTimer = chaseTime; break; } playerDetected = checkHear(); if (playerDetected) { alert.updateState(playerDetected); alertTimer = alertTime; } else { alertTimer -= Time.deltaTime; patrol.startState(); setState(State.Patrol); } break; case State.Chasing: playerDetected = checkSight(); if (playerDetected) { chaseTimer = chaseTime; chase.updateState(playerDetected); } else { playerDetected = checkHear(); if (playerDetected) { chaseTimer = chaseTime; chase.updateState(playerDetected); } else //Ni veo ni oigo { chaseTimer -= Time.deltaTime; if (chaseTimer < 0) { chase.stopState(); alert.startState(null); setState(State.Alert); alertTimer = alertTime; } } } break; } }