Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problemas para limitar o cursor do mouse à janela - UNITY 3D

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);
        }
    }
}
2 respostas

Ainda aguardando alguma ajuda...

solução!

Oi Leonardo tudo bom?

Desculpa a demora pra responder. Nesses casos essa é a melhor solução mesmo, Isso pq para limitarmos o cursos temos que falar diretamente com o sistema operacional então a unity fez essa interface que abstrai toda comunicação de baixo nível. E ainda consegue conversar com diversos SO como Windows w Linux