[내배캠] 유니티 입문 개인과제#3

Sungchan Ahn(안성찬)·2024년 10월 14일

내일배움캠프

목록 보기
42/104

오늘 겪은 문제

플레이어 이름 변경 등 UI가 활성화된 상태에서 캐릭터의 이동을 막고 싶은 경우가 생기는데 기존의 캐릭터 이동을 멈추는 방법에서 문제가 발생.
이름 변경 시 2~10글자의 이름을 입력하지 않으면 안내문구 "2 ~ 10글자의 이름을 입력해주세요"가 3초간 빨간 글씨로 강조 표시 되는데 기존 방법인 Time.timeScale을 0.0f으로 만드는 방법은 빨간 글씨가 강조된 상태로 멈추는 문제가 발생한다.

해결

그래서 GameManager에 bool IsPlaying을 만들고 필요할 때 IsPlaying을 false로 만들어 캐릭터의 rigidbody velocity를 0으로 만드는 방식으로 캐릭터 이동을 막았다.

public class HoldInputSystemButton : UIManager
{
    public void HoldInputSystem()
    {
        if (SelectedUI.activeSelf)
        {
            GameManager.Instance.IsPlaying = false;
        }
        else
        {
            GameManager.Instance.IsPlaying = true;
        }
    }
}

public class TopDownMovement : MonoBehaviour
{
    private TopDownController controller;
    private Rigidbody2D movementRigidbody;

    private Vector2 movementDirection = Vector2.zero;
    
    (중략)
    
    private void ApplyMovement(Vector2 direction)
    {
        if (GameManager.Instance.IsPlaying)
        {
            direction = direction * 5f;
            movementRigidbody.velocity = direction;
        }
        else
        {
            movementRigidbody.velocity = Vector2.zero;
        }
    }
profile
게임 개발 기록

0개의 댓글