#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. Потрясающе 🙂 Возможно, было бы здорово, если бы вы могли пометить это как ответ.