Introdução:
Olá, estou com problemas para limitar o cursor do mouse à janela do jogo. O programa controla uma sprite como se fosse um cursor customizado. O problema é que como o jogo é executado em modo janela, não quero que o ponteiro do mouse saia de dentro da mesma e interaja com o ambiente externo do Windows.
O que eu tentei:
Fuçando na documentação da Unity Scripting API encontrei e apliquei a propriedade lockState associada ao CursorLockMode.Confined. Apesar de agora não ser possível sair da janela com o cursor, ainda pode-se interagir com os elementos internos à janela do Windows (botão fechar, minimizar, maximizar e arestas).
Qual seria outra alternativa para resolver essa questão?
Abaixo deixo um link para um gif da tela do jogo e o meu código:
CLIQUE PARA VER A JANELA DO JOGO
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MouseCursor : MonoBehaviour
{
private void Start()
{
Cursor.lockState = CursorLockMode.Confined;
Cursor.visible = false;
}
void Update()
{
Vector2 cursorPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = cursorPos;
if (transform.position.x <= -6.0f || transform.position.x >= 6.0f)
{
float posX = Mathf.Clamp(transform.position.x, -6.0f, 6.0f);
transform.position = new Vector2(posX, transform.position.y);
}
if (transform.position.y <= -4.5f || transform.position.y >= 4.5f)
{
float posY = Mathf.Clamp(transform.position.y, -4.5f, 4.5f);
transform.position = new Vector2(transform.position.x, posY);
}
}
}