Как проверить, был ли нажат объект пользовательского интерфейса? - PullRequest
0 голосов
/ 29 мая 2020

Я новичок в Unity и пытаюсь создать базовую c игру-тральщик. У меня есть квадратный префаб, и я хочу узнать, щелкнули ли по нему. Но я не могу его слушать, потому что мне нужен как левый, так и правый щелчок. Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Самый быстрый способ - реализовать что-то подобное на сборном sh префабе, на котором вы будете *1013* прослушивать клики:

void OnMouseOver()
{
    if (Input.GetMouseDown(0)) {
         // Left click
    }
    else if (Input.GetMouseDown(1)) {
        // Right click
    }

}

Если вы вместо этого хотите обнаруживать щелчки мыши из более центрального положения ( например, не распространяется на каждый GameObject) вам нужно будет создать компонент, который запускает Raycast в зависимости от щелчка левой и правой кнопкой мыши и ищет определенные c объекты, а затем вы logi c

Short пример:

if (Input.GetMouseDown(0)) {

    if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100)) {
        // something was hit
    }

}


https://docs.unity3d.com/ScriptReference/Physics.Raycast.html

0 голосов
/ 29 мая 2020

Вы можете попробовать использовать функцию Input.GetKeyDown в Update:


    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Mouse0))
        {
            //print("Right click");
        }
        else if (Input.GetKeyDown(KeyCode.Mouse1))
        {
            //print("Left click");
        }
    }

Для определения того, находится ли мышь над игровым объектом spesifi c, вы можете использовать:

void OnMouseOver()
     {
         ///
     }

или

Ray ray;
     RaycastHit hit;

     void Update()
     {
         ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         if(Physics.Raycast(ray, out hit))
         {
             print (hit.collider.name);
         }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...