Unity 3D, как я могу определить, находится ли мышь над 2D-спрайтом, даже если спрайт не виден

#c# #unity3d #sprite #mouse

#c# #unity3d #спрайт #мышь

Вопрос:

Я работаю с игровым движком Unity3D и наткнулся на эту проблему. Когда я пытаюсь проверить, находится ли мышь над спрайтом, я могу сделать это с помощью этого обратного вызова.

 private void OnMouseOver()
{
    // Do Something
}
  

Но если мышь не находится непосредственно над спрайтом, этот метод не будет работать.
Есть ли какие-либо альтернативы?

Оранжевый спрайт — это спрайт, который я хочу обнаружить, но синий круг не позволяет обнаружить мышь (это выглядит не очень хорошо, я не художник, но я должен прояснить ситуацию, я надеюсь)

Ответ №1:

Если вы хотите знать, какие объекты находятся под вашим щелчком мыши, используйте это:

Пример — поместите его в свое обновление:

 if (Input.GetMouseButtonDown(0))
{
    var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    var hits = Physics2D.GetRayIntersectionAll(ray, 1500f);

    foreach (var hit in hits)
    {
        print($"Mouse is over {hit.collider.name}");
    }
}
  

По соображениям производительности вы можете использовать:

Комментарии:

1. Потрясающе 🙂 Возможно, было бы здорово, если бы вы могли пометить это как ответ.