У меня есть очень простой компонент Unity, который проверяет, находится ли положение экрана мыши внутри 2D-коллайдера.Unity Physics2D.Raycast имеет проблемы с большими 2D-коллайдерами
var screenRay = Camera.main.ScreenPointToRay(new Vector3(eventData.position.x, eventData.position.y, 0.0f));
RaycastHit2D hit = Physics2D.Raycast(screenRay.origin, screenRay.direction);
if (hit)
{
Debug.Log("hit something");
}
добавить объект изображения на холст, который рендеринг в пространстве экрана: Camera и компонент Box Collider 2D к изображению.
Приведенный выше код «ударил что-то», когда указатель мыши находится внутри Box Collider 2D, но не снаружи, что я и хочу.
Однако это справедливо только в том случае, если коллайдер коробки меньше 120 x 120. Если это размер или больше, я начинаю получать вывод журнала во всем экране - Physics2D.Raycast возвращает что-то по всему экрану. The Physics2D.Raycast, похоже, думает, что коллайдер внезапно занимает весь экран, чего нет, он даже не близок. Сокращение коллайдера до 115 x 115 решает проблему, но, как вы можете себе представить, я не хочу особого поведения на некоторых размерах коллайдера. Изображение размером 100x100. Если я создаю размер коллайдера 1x1 (едва заметный), Raycaster дает удар по всему изображению 100x100.
Размер изображения не имеет эффекта. Кто-нибудь знает, почему этот волшебный размер внезапно больше, чем указано?
EDIT: У меня такая же проблема с CircleCollider2D - если радиус превышает примерно 100, внезапно я сталкиваюсь с ним по всему экрану.
Это похоже на невидимое дополнение, которое растет бесконечно выше определенного размера. – Helena