Я делаю меню паузы в моей игре. Моя игра блокирует курсор в позиции, а затем скрывает курсор, чтобы он не отвлекал пользователя. Это работает как задумано, пока я не остановлю игру. Курсор становится видимым (так как Cursor.Visible установлен в true в функции паузы), и меню паузы работает правильно. Когда я снова нажимаю escape, чтобы выйти из меню, курсор остается видимым в позиции на экране.
Как я могу это исправить?
Спасибо,
Вот мой код:
using UnityEngine;
public class PlayerCameraRotation : MonoBehaviour
{
Vector2 mouseDirection; //Initialises Mouse Direction.
Vector2 smoothValue; // Initialises The Smoothing Value.
private float sensitivity = 1.0F; // Sets The Sensitivity To 1.
private float smoothing = 2.0F; // Sets Smoothing To 2.
private GameObject cameraDirection; // Initialises Camera Direction.
Vector2 mouseD;
private bool gamePause = false;
void Start() // Calls Once As Soon As The Program Is Started.
{
cameraDirection = transform.parent.gameObject; // Rotates The Camera To Face The Same Direction As The Player.
}
void LateUpdate() // Updates Every Frame After All Other Updates Have Been Completed.
{
if(gamePause == false)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
mouseD = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y"));
mouseD = Vector2.Scale(mouseD, new Vector2(sensitivity * smoothing, sensitivity * smoothing));
smoothValue.x = Mathf.Lerp(smoothValue.x, mouseD.x, 1f / smoothing);
smoothValue.y = Mathf.Lerp(smoothValue.y, mouseD.y, 1f / smoothing);
mouseDirection += smoothValue;
mouseDirection.y = Mathf.Clamp(mouseDirection.y, -90f, 90f);
transform.localRotation = Quaternion.AngleAxis(-mouseDirection.y, Vector3.right);
cameraDirection.transform.localRotation = Quaternion.AngleAxis(mouseDirection.x, cameraDirection.transform.up);
if (Input.GetKeyDown("escape"))
{
if(gamePause == true)
{
ResumeGame();
gamePause = false;
}
else
{
PauseGame();
gamePause = true;
}
}
}
private void ResumeGame()
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
smoothing = 2F;
}
private void PauseGame()
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
smoothing = 0F;
}
}