У меня есть GameController объект с квадратным 2D-коллайдером, который покрывает весь экран. Внутри этого GameController есть 7 объектов (Зоны), каждый из которых имеет свой собственный многоугольник. Вот установка:Единство: collider2D.bounds.Contains не работает должным образом
То, что я пытаюсь сделать, это проверить, если щелкнуть положение внутри любого из коллайдеров тех, зона всякий раз, когда я нажимаю внутри большого квадрата коллайдера.
Это OnMouseDown() код сценария в GameController в:
void OnMouseDown()
{
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
if(this.collider2D.bounds.Contains(mousePos)) Debug.Log ("1st Check");
//'Zones' is a list with all the Zones GameObjects
foreach (GameObject zone in Zones)
{
if(zone.collider2D.bounds.Contains(mousePos))
{
Debug.Log ("2nd Check");
}
}
}
Если не я ВСЕГДА получить "1st Check"? Потому что это избыточно: если OnMouseDown() получил срабатывание, потому что я щелкнул внутри коллайдера, тогда позиция мыши должна находиться внутри коллайдера. Но я никогда этого не делаю, поэтому я думаю, что я что-то упустил здесь около Input.mousePosition или ScreenToWorldPoint().