void Update() { switch (gameState) { case GameState.Initialized: { moveTimer += Time.deltaTime; player.MoveTo(Vector3.Lerp(_PlayerData._SpawnPoint.pSpawnPoint, _PlayerData._StartPoint.pSpawnPoint, moveTimer * 1.0f)); if (moveTimer >= 1.0f) { moveTimer = 0.0f; SetState(GameState.InGame); } } break; case GameState.InGame: { gameSpeed += Time.deltaTime * gameData._DifficultyFactor; SetSpeed(gameSpeed); player.Update(); for (int i = 0; i < _ObstaclePool.pActiveList.Count; i++) { ObstaclePool.ObstacleCache obstacle = _ObstaclePool.pActiveList[i]; if (player.IsTouching(obstacle.mCollider)) { GameOver(); return; } float angle = Vector3.Dot(Vector3.right, (player.pTransform.position - obstacle.mTransform.position).normalized); //if (angle > 0.5f && angle < 0.8f) //{ // Debug.Log("Angle : " + angle); // Debug.Break(); //} if (obstacle.mCollider.isTrigger == false && angle > 0.8f) { objectDodged++; obstacle.mCollider.isTrigger = true; UpdateCounter(); } } spawnTimer += Time.deltaTime; if (spawnTimer >= nextObstacleSpawnTimer) { spawnTimer = 0.0f; nextObstacleSpawnTimer = 2.0f + UnityEngine.Random.Range(0, 2.0f); _ObstaclePool.Spawn(_ObstacleSpawnPoint); } } break; } }