IEnumerator LoadScene(string sceneToLoad) { gridStorage.StoreGrid(); _UIController.FadeScreen(0.5f); stopMove = true; if (SceneManager.GetActiveScene().name == "CaveScene" && sceneToLoad == "CaveScene") { currentFloorLevel += 1; } else { currentFloorLevel = 1; } _UIController.floorLevel.text = $"Floor {currentFloorLevel}"; yield return(new WaitForSeconds(0.3f)); SceneManager.LoadScene(sceneToLoad); while (!SceneManager.GetActiveScene().isLoaded) { yield return(new WaitForSeconds(0.01f)); } yield return(new WaitForSeconds(0.1f)); gridStorage.LoadGrid(); SceneSwitchGO temp = GameObject.FindGameObjectWithTag("SceneStartPos").GetComponent <SceneSwitchGO>(); Vector3 movePoint = temp.transform.position + temp.offset; SetAllButtonFalse(); stopMove = false; MoveToPoint(movePoint); }
public bool MoveSceneObjCheck() { if (Physics2D.OverlapCircle(playerMoveGO.position + moveDir, 0.2f, sceneSwitchMask)) { RaycastHit2D hit; Vector3 direction = Vector3.Normalize(moveDir); if (hit = Physics2D.Raycast(playerMoveGO.position, direction)) { SceneSwitchGO temp = hit.collider.GetComponent <SceneSwitchGO>(); StartCoroutine(LoadScene(temp.sceneToLoad)); return(true); } } return(false); }
public void Move() { if (!inCombat) { if (!stopMove) { if (!pathFindingMove) { if (Vector3.Distance(transform.position, playerMoveGO.position) <= .05f) { if (moveDir != Vector3.zero) { if (Physics2D.OverlapCircle(playerMoveGO.position + moveDir, 0.2f, sceneSwitchMask)) { RaycastHit2D hit; Vector3 direction = Vector3.Normalize((playerMoveGO.position + moveDir) - playerMoveGO.position); if (hit = Physics2D.Raycast(playerMoveGO.position, direction)) { SceneSwitchGO temp = hit.collider.GetComponent <SceneSwitchGO>(); StartCoroutine(LoadScene(temp.sceneToLoad)); } } //EnemyCollision else if (Physics2D.OverlapCircle(playerMoveGO.position + moveDir, 0.2f, enemyMask)) { RaycastHit2D hit; Vector3 direction = Vector3.Normalize((playerMoveGO.position + moveDir) - playerMoveGO.position); if (hit = Physics2D.Raycast(playerMoveGO.position, direction)) { CombatStart(hit.collider.gameObject); } moveDir = Vector3.zero; } //BuildingCollision else if (Physics2D.OverlapCircle(playerMoveGO.position + moveDir, 0.2f, buildingMask)) { RaycastHit2D hit; Vector3 direction = Vector3.Normalize((playerMoveGO.position + moveDir) - playerMoveGO.position); if (hit = Physics2D.Raycast(playerMoveGO.position, direction)) { Debug.Log(hit.collider.gameObject.name); } moveDir = Vector3.zero; } //NoCollision else if (!Physics2D.OverlapCircle(playerMoveGO.position + moveDir, 0.2f, stopMoveMask)) { playerMoveGO.position += moveDir; } } } transform.position = Vector3.MoveTowards(transform.position, playerMoveGO.position, moveSpeed * Time.deltaTime); } else if (pathFindingMove) { if (Input.GetMouseButtonDown(0) && !_UIController.IsPointerOverUI()) { Vector3 clickedTile = Camera.main.ScreenToWorldPoint(Input.mousePosition); movePath = pathfinding.GetMovePath(new Vector3(Mathf.RoundToInt(clickedTile.x), Mathf.RoundToInt(clickedTile.y), 0), transform.position); } else if (movePath.Count > 0) { if (movePath[movePath.Count - 1] != playerMoveGO.position && moveDir == Vector3.zero) { if (movePath[movePath.Count - 1].x > playerMoveGO.position.x) { RightButton(); } else if (movePath[movePath.Count - 1].x < playerMoveGO.position.x) { LeftButton(); } else if (movePath[movePath.Count - 1].y > playerMoveGO.position.y) { UpButton(); } else { DownButton(); } playerMoveGO.position += moveDir; } else if (Vector3.Distance(transform.position, playerMoveGO.position) == 0) { movePath.RemoveAt(movePath.Count - 1); moveDir = Vector3.zero; } //Debug.Log(movePath[movePath.Count - 1]); transform.position = Vector3.MoveTowards(transform.position, playerMoveGO.position, moveSpeed * Time.deltaTime); } } } } else { // } }