Мой курсор остается видимым при выходе из меню паузы, даже если я вызвал курсор. Видимая функция при выходе из меню - PullRequest
0 голосов
/ 02 февраля 2020

Я делаю меню паузы в моей игре. Моя игра блокирует курсор в позиции, а затем скрывает курсор, чтобы он не отвлекал пользователя. Это работает как задумано, пока я не остановлю игру. Курсор становится видимым (так как 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;
}
}

1 Ответ

1 голос
/ 03 февраля 2020

Проблема здесь заключается в том, что при запуске кода в редакторе Unity курсор не равен sh, но когда тот же код создается и затем запускается, курсор выполняет sh, как и предполагалось. Эта проблема была решена путем сборки проекта и запуска .exe-файла.

...