Голосование за лучший ответ
creakdowndeadly
Мастер
(1079)
8 месяцев назад
Может ты отправишь нам код движения камеры, чтобы мы лучше могли понять в чем проблема. Возможно то, что камера не привязана к timeScale.
Либо код игрока, чтобы лучше разобраться что к чему.
Ефим Арбатов
Ученик
(173)
8 месяцев назад
попробуй
public GameObject pauseMenuUI;
public GameObject player; // Moved this variable declaration up
private void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if (GameIsPaused)
{
Resume();
}
else
{
Pause();
}
}
}
public void Resume()
{
pauseMenuUI.SetActive(false);
Time.timeScale = 1f;
GameIsPaused = false;
player.GetComponent<FirstPersonController>().enabled = true;
}
public void Pause()
{
pauseMenuUI.SetActive(true);
Time.timeScale = 0f;
GameIsPaused = true;
player.GetComponent<FirstPersonController>().enabled = false;
}
public void LoadMenu()
{
Debug.Log("Load");
Time.timeScale = 1f;
SceneManager.LoadScene("menu");
}
public void QuitGame()
{
Debug.Log("Quit");
Application.Quit();
}
public void Stop()
{
player.GetComponent<FirstPersonController>().enabled = false;
// Остальной код
}
public void Play()
{
player.GetComponent<FirstPersonController>().enabled = true;
// Остальной код
}
Ефим АрбатовУченик (173)
8 месяцев назад
И я бы посоветовал поставить в код вот это
private bool isPaused = false;
private float initialTimeScale;
void Start()
{
initialTimeScale = Time.timeScale;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if (isPaused) Resume();
else Pause();
}
}
public void Resume()
{
isPaused = false;
pauseMenuUI.SetActive(false);
Time.timeScale = initialTimeScale;
foreach (Camera camera in cameras) camera.enabled = true;
}
void Pause()
{
isPaused = true;
pauseMenuUI.SetActive(true);
Time.timeScale = 0f;
foreach (Camera camera in cameras) camera.enabled = false;
}
Вот мой текущий код: