Chapter 10-4. 생존킷 : 게임 매니저로 커서와 플레이어 움직임 제어하기

Date:     Updated:

카테고리:

태그:

인프런에 있는 케이디님의 [유니티 3D] 실전! 생존게임 만들기 - Advanced 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click

생존킷 : 게임 매니저로 커서 감추기

게임매니저로 효율적으로 크래프트 UI, 인벤토리 UI, 생존 킷(컴퓨터) 화면 UI 등등 게임 속 여러 창들을 활성화 할 때만 커서가 활성화 될 수 있도록 하자.

📜GamaManager

빈 오브젝트 GameManager 만들고 거기에 붙이기

싱글톤으로 만들어도 좋을 것 같다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static bool canPlayerMove = true; // 플레이어의 움직임 제어

    public static bool isOpenInventory = false; // 인벤토리 활성화
    public static bool isOpenCraftManual = false; // 건축 메뉴 활성화
    public static bool isOnComputer = false; // 생존킷 컴퓨터 화면 활성화

    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    }

    void Update()
    {
        if (isOpenInventory || isOpenCraftManual || isOnComputer)
        {
            Cursor.lockState = CursorLockMode.None;
            Cursor.visible = true;

            canPlayerMove = false;
        }
            
        else
        {
            Cursor.lockState = CursorLockMode.Locked;
            Cursor.visible = false;

            canPlayerMove = true;
        }
            
    }
}
  • 3 가지 static 변수 (외부에서 그냥 GamaManger 클래스 이름으로 접근 가능)
    • 인벤토리, 건축 메뉴, 컴퓨터 화면 등등 이런 게임 내의 창들의 상태
    • 활성화 되면 외부에서 true 로 바꾼다.
  • Start
    • 전체적으로 게임이 시작되자마자 커서를 잠근고 안보이게 한다.
  • Update
    • 매 프레임마다 창들이 활성화 됐는지 검사한다.
      • 하나라도 활성화 되어 있다면 커서를 활성화하고 플레이어의 움직임을 제한한다.
        • 📜PlayerController 에서 canPlayerMove가 false 이면 플레이어가 움직이지 못하도록 한다.
    • 비활성화 됐다면 그 반대
      • 커서 비활성화, 플레이어 움직임 활성화


📜PlayerController

    void Update()  
    {
        if (isActivated && GameManager.canPlayerMove)
        {
            IsGround();
            TryJump();
            TryRun();
            TryCrouch();
            Move();
            MoveCheck();
            CameraRotation();
            CharacterRotation();
        }
    }

canPlayerMove 값이 true 일 때만 플레이어가 움직일 수 있도록 한다.


📜Inventory

    private void OpenInventory()
    {
        GameManager.isOpenInventory = true;
        go_InventoryBase.SetActive(true);
    }

    private void CloseInventory()
    {
        GameManager.isOpenInventory = false;
        go_InventoryBase.SetActive(false);
    }


📜CraftManual

    private void OpenWindow()
    {
        GameManager.isOpenCraftManual = true;

        isActivated = true;
        go_BaseUI.SetActive(true);
    }

    private void CloseWindow()
    {
        GameManager.isOpenCraftManual = false;

        isActivated = false;
        go_BaseUI.SetActive(false);
    }


📜ComputerKit

    public void PowerOn() // 📜ActionController 에서 호출
    {
        GameManager.isOnComputer = true;

        isPowerOn = true;
        go_BaseUI.SetActive(true);
    }

    private void PowerOff()
    {
        GameManager.isOnComputer = false;

        theToolTip.HideToolTip();
        isPowerOn = false;
        go_BaseUI.SetActive(false);
    }

Start 함수에서 커서 잠궈줬던건 지워졌다. 게임 매니저에서 해주니까!



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Unity Lesson 3 카테고리 내 다른 글 보러가기

댓글 남기기