플레이어 이름 변경 등 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;
}
}