private void Start() { possibleMovements = new List <movement>(); actualState = fsm.random; currentMovement = movement.none; chaseMovement = movement.none; changeDirectionClock = 0; lCheckBool = lCheck.GetComponent <Check>(); rCheckBool = rCheck.GetComponent <Check>(); uCheckBool = uCheck.GetComponent <Check>(); dCheckBool = dCheck.GetComponent <Check>(); }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected override void UpdateRun( fsm.State _curState ) { base.UpdateRun(_curState); spawnTimer += Time.deltaTime; if (spawnTimer > interval) { if (currentBulletCount < maxBulletCount) { SpawnATridentBulletAt(startPos); spawnTimer = 0.0f; } else { currentRepCount++; StartARound(); spawnTimer = 0.0f; } } }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void UpdateGameOverState( fsm.State _curState ) { }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected virtual void ExitPauseState( fsm.State _from, fsm.State _to, fsm.Event _event ) { AcceptInput(true); }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void ExitMainLoopState( fsm.State _from, fsm.State _to, fsm.Event _event ) { Screen.showCursor = true; }
/////////////////////////////////////////////////////////////////////////////// // Pause state /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected virtual void EnterPauseState( fsm.State _from, fsm.State _to, fsm.Event _event ) { AcceptInput(false); }
/////////////////////////////////////////////////////////////////////////////// // GameOver state /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void EnterGameOverState( fsm.State _from, fsm.State _to, fsm.Event _event ) { AcceptInput(false); gamePanel.ShowGameOver(); challengeMng.StopChallenges(); gamePanel.panelGameOver.ShowNamePrompt(true); StartCoroutine(Game.instance.snsMng.SetLeaderBoard(Mathf.FloorToInt(Stage.instance.timer))); StartCoroutine(Game.instance.snsMng.GetUser()); }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void UpdateFinish( fsm.State _curState ) { }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void EnterFinish( fsm.State _from, fsm.State _to, fsm.Event _event ) { stateMachine.Send( (int) EventType.Deactive); }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void EnterStageState( fsm.State _from, fsm.State _to, fsm.Event _event ) { StartCoroutine( DelayInit() ); }
/////////////////////////////////////////////////////////////////////////////// // loading state /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void EnterLoadingState( fsm.State _from, fsm.State _to, fsm.Event _event ) { LoadStageEvent e = _event as LoadStageEvent; if ( e != null ) { StartCoroutine( StartLoading( e.scene, 1.0f ) ); } }
/////////////////////////////////////////////////////////////////////////////// // launch state /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void EnterLaunchState( fsm.State _from, fsm.State _to, fsm.Event _event ) { Application.LoadLevel( "MainMenu" ); stateMachine.Send( (int)EventType.ShowStage ); }
private void Update() { possibleMovements.Clear(); possibleMovementsCount = 0; changeDirectionClock += Time.deltaTime; //-----------possible movement raycasts----------------- //Physics.Raycast(transform.position, transform.forward, out RaycastHit moveUp, 0.7f); //Physics.Raycast(transform.position, -transform.forward, out RaycastHit moveDown, 0.7f); //Physics.Raycast(transform.position, -transform.right, out RaycastHit moveLeft, 0.7f); //Physics.Raycast(transform.position, transform.right, out RaycastHit moveRight, 0.7f); //----------player seeking raycasts--------------------- Physics.Raycast(transform.position, transform.forward, out RaycastHit viewUp, visionRange); Physics.Raycast(transform.position, -transform.forward, out RaycastHit viewDown, visionRange); Physics.Raycast(transform.position, -transform.right, out RaycastHit viewLeft, visionRange); Physics.Raycast(transform.position, transform.right, out RaycastHit viewRight, visionRange); //----------player seen check-------------------------- if (viewUp.transform != null && viewUp.transform.tag == "Player") { chaseMovement = movement.up; actualState = fsm.chase; } else { if (viewDown.transform != null && viewDown.transform.tag == "Player") { chaseMovement = movement.down; actualState = fsm.chase; } else { if (viewLeft.transform != null && viewLeft.transform.tag == "Player") { chaseMovement = movement.left; actualState = fsm.chase; } else { if (viewRight.transform != null && viewRight.transform.tag == "Player") { chaseMovement = movement.right; actualState = fsm.chase; } else { chaseMovement = movement.none; actualState = fsm.random; } } } } //---------possible movement checks-------------------- if (!uCheckBool.isTrigger) { possibleMovements.Insert(possibleMovementsCount, movement.up); possibleMovementsCount++; } else { if (currentMovement == movement.up) { currentMovement = movement.none; changeDirectionClock = 0; } } if (!dCheckBool.isTrigger) { possibleMovements.Insert(possibleMovementsCount, movement.down); possibleMovementsCount++; } else { if (currentMovement == movement.down) { currentMovement = movement.none; changeDirectionClock = 0; } } if (!lCheckBool.isTrigger) { possibleMovements.Insert(possibleMovementsCount, movement.left); possibleMovementsCount++; } else { if (currentMovement == movement.left) { currentMovement = movement.none; changeDirectionClock = 0; } } if (!rCheckBool.isTrigger) { possibleMovements.Insert(possibleMovementsCount, movement.right); possibleMovementsCount++; } else { if (currentMovement == movement.right) { currentMovement = movement.none; changeDirectionClock = 0; } } //----------FSM----------------------- switch (actualState) { case fsm.random: if (possibleMovementsCount == 0) { currentMovement = movement.none; } else { if (changeDirectionClock >= changeDirectionTime) { currentMovement = possibleMovements[Random.Range(0, possibleMovementsCount)]; changeDirectionClock = 0; } } break; case fsm.chase: changeDirectionClock = 0; currentMovement = chaseMovement; break; } //--------actual movement-------------- float offsetZ = Mathf.Abs(transform.position.z) - Mathf.Floor(Mathf.Abs(transform.position.z)); float offsetX = Mathf.Abs(transform.position.x) - Mathf.Floor(Mathf.Abs(transform.position.x)); switch (currentMovement) { case movement.up: transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + speed * Time.deltaTime); if (Mathf.Abs(0.5f - offsetX) > snapThreshold) { if (offsetX >= 0.5) { transform.position = new Vector3(transform.position.x + correctionSpeed * Time.deltaTime, transform.position.y, transform.position.z); } else { transform.position = new Vector3(transform.position.x - correctionSpeed * Time.deltaTime, transform.position.y, transform.position.z); } } else { if (offsetX >= 0.5) { transform.position = new Vector3(transform.position.x + Mathf.Abs(0.5f - offsetX), transform.position.y, transform.position.z); } else { transform.position = new Vector3(transform.position.x - Mathf.Abs(0.5f - offsetX), transform.position.y, transform.position.z); } } break; case movement.down: transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - speed * Time.deltaTime); if (Mathf.Abs(0.5f - offsetX) > snapThreshold) { if (offsetX >= 0.5) { transform.position = new Vector3(transform.position.x + correctionSpeed * Time.deltaTime, transform.position.y, transform.position.z); } else { transform.position = new Vector3(transform.position.x - correctionSpeed * Time.deltaTime, transform.position.y, transform.position.z); } } else { if (offsetX >= 0.5) { transform.position = new Vector3(transform.position.x + Mathf.Abs(0.5f - offsetX), transform.position.y, transform.position.z); } else { transform.position = new Vector3(transform.position.x - Mathf.Abs(0.5f - offsetX), transform.position.y, transform.position.z); } } break; case movement.left: transform.position = new Vector3(transform.position.x - speed * Time.deltaTime, transform.position.y, transform.position.z); if (Mathf.Abs(0.5f - offsetZ) > snapThreshold) { if (offsetZ >= 0.5) { transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + correctionSpeed * Time.deltaTime); } else { transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - correctionSpeed * Time.deltaTime); } } else { if (offsetZ >= 0.5) { transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + Mathf.Abs(0.5f - offsetZ)); } else { transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - Mathf.Abs(0.5f - offsetZ)); } } break; case movement.right: transform.position = new Vector3(transform.position.x + speed * Time.deltaTime, transform.position.y, transform.position.z); if (Mathf.Abs(0.5f - offsetZ) > snapThreshold) { if (offsetZ >= 0.5) { transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + correctionSpeed * Time.deltaTime); } else { transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - correctionSpeed * Time.deltaTime); } } else { if (offsetZ >= 0.5) { transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + Mathf.Abs(0.5f - offsetZ)); } else { transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - Mathf.Abs(0.5f - offsetZ)); } } break; case movement.none: break; } }
throw new StateIdAlreadyAddedException(fsm, states[i].Item1.ToString());
/////////////////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void EnterGetReady( fsm.State _from, fsm.State _to, fsm.Event _event ) { if (_event.id == (int)EventType.Restart) { Reset(); } StartCoroutine(gamePanel.ShowStart()); AcceptInput(false); stateMachine.Send( fsm.Event.NEXT ); }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void ExitLaunchState( fsm.State _from, fsm.State _to, fsm.Event _event ) { }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void ExitLoadingState( fsm.State _from, fsm.State _to, fsm.Event _event ) { // loadingIndicator.gameObject.SetActiveRecursively(false); }
/////////////////////////////////////////////////////////////////////////////// // states /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void EnterSleep( fsm.State _from, fsm.State _to, fsm.Event _event ) { sleepTimer = 0.0f; }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void ExitStageState( fsm.State _from, fsm.State _to, fsm.Event _event ) { }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void UpdateSleep( fsm.State _curState ) { if (startTime > 0.0f) { sleepTimer += Time.deltaTime; if (sleepTimer > startTime) { StartBullets(); } } }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void EnterPrepare( fsm.State _from, fsm.State _to, fsm.Event _event ) { stateMachine.Send( (int)EventType.Run ); }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void EnterNoBullet( fsm.State _from, fsm.State _to, fsm.Event _event ) { Invoke ( "StartGame", 2.0f ); }
/////////////////////////////////////////////////////////////////////////////// // Main Loop State /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected virtual void EnterRun( fsm.State _from, fsm.State _to, fsm.Event _event ) { }
/////////////////////////////////////////////////////////////////////////////// // Restart state /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void EnterRestartState( fsm.State _from, fsm.State _to, fsm.Event _event ) { Reset(); stateMachine.Send( (int) EventType.Restart ); }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected virtual void ExitPause( fsm.State _from, fsm.State _to, fsm.Event _event ) { }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void ExitNoBullet( fsm.State _from, fsm.State _to, fsm.Event _event ) { }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void ExitPrepare( fsm.State _from, fsm.State _to, fsm.Event _event ) { }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void ExitRestartState( fsm.State _from, fsm.State _to, fsm.Event _event ) { gamePanel.HideGameOver(); }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected virtual void UpdateRun( fsm.State _curState ) { }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void UpdateMainLoopState( fsm.State _curState ) { timer += Time.deltaTime; if (Mathf.FloorToInt(timer)%10 == 1) { challengeMng.UpdateSpeed(); } }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void EnterDeactive( fsm.State _from, fsm.State _to, fsm.Event _event ) { }
/////////////////////////////////////////////////////////////////////////////// // Main Loop State /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void EnterMainLoopState( fsm.State _from, fsm.State _to, fsm.Event _event ) { challengeMng.StartChallenges(); Screen.showCursor = false; AcceptInput(true); }
/////////////////////////////////////////////////////////////////////////////// // Main Loop State /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected override void EnterRun( fsm.State _from, fsm.State _to, fsm.Event _event ) { base.EnterRun( _from, _to, _event ); StartARound(); }