示例#1
0
    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);
    }
示例#2
0
 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);
 }
示例#3
0
    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
        {
            //
        }
    }