vodimak
@vodimak

Как запретить движение игрока?

короче когда я ставлю игру на паузу игрок может летать (если что по игре он должен летать) и я даже не понимаю почему. помогите заблокировать движение на паузе.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class PauseMenu : MonoBehaviour
{
    public static bool GameIsPaused = false;

    public GameObject pauseMenuUI;

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            if (GameIsPaused)
            {
                Resume();
            }
            else
            {
                Pause();
            }
        }
    }

    public void Resume()
    {
        pauseMenuUI.SetActive(false);
        Time.timeScale = 1f;
        GameIsPaused = false;
    }

    void Pause()
    {
        pauseMenuUI.SetActive(true);
        Time.timeScale = 0f;
        GameIsPaused = true;
    }

    public void LoadMenu()
    {
        Debug.Log("Load");
        Time.timeScale = 1f;
        SceneManager.LoadScene("menu");
    }
}
  • Вопрос задан
  • 298 просмотров
Пригласить эксперта
Ответы на вопрос 1
red-cat-fat
@red-cat-fat
Делаю игры
Смотри, самый хороший вариант - инкапсулировать управление. В частности создать класс, который будет слушать управление у Input.GetKeyDown и хранить в себе вектор перемещения например.
Типа сделать интерфейс IInputService, у которого есть метод Vector3 GetMoveDirection() - реализации этого метода будут брать Input.GetKey(*W/A/S/D*) (или мобильное управление) и определять куда надо двигаться.
А для того, чтобы заблокировать/разблокировать движение игрока - реализовать IInputService.Lock / IInputService.UnLock в которых будет "лочиться управление" через переменную IsLock. И уже в каждой конкретной реализации проверять, не заблокировано ли управление.
Что-то вроде:
public Vector3 GetMoveDirection()
{
  if(IsLock){
    return Vector3.zero;
  }
  //а тут уже реализовать логику определения движения персонажа
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы