Я пытаюсь выяснить, находится ли точка (щелчок мыши) в пределах рамки, основанной на верхнем левом x/y и нижнем правом углу x/y. Позиция может быть положительной или отрицательной. Когда вы двигаетесь вверх, значение y увеличивается, при движении вниз, y уменьшается. Когда вы двигаетесь вправо, значение x увеличивается, когда вы двигаетесь влево, x уменьшается.Лучший способ найти, находится ли точка в пределах другого Vector2?
Позиции Vector2 могут быть отрицательными или положительными в зависимости от того, где щелкнули.
Я думал, что это будет просто работать, но это не похоже на отрицательные числа. Какие-либо предложения? Мой мозг жарится сегодня вечером после выполнения векторной арифметики всю ночь на других вещах. Хотелось бы, чтобы я был одним из вас, кто, похоже, понимает это без проблем. ;)
if(point.x >= topLeft.x && point.y <= topLeft.y &&
point.x <= bottomRight.x && point.y >= bottomRight.y)
{
// is within box
}
Редактировать Вот как верхний левый и нижний правый вычисляются. Как оказалось, проблема не в том, что было выше, но я забыл добавить position.y в верхний левый расчет ниже.
Vector2 topLeft = new Vector2(transform.position.x - (transform.localScale.x/2),
transform.position.y + (transform.localScale.y/2));
Vector2 bottomRight = new Vector2(transform.position.x + (transform.localScale.x/2),
transform.position.y - (transform.localScale.y/2));
Для всех, кто попадает по этой теме, вышеуказанная проверка верна.
Пример 1:
Пример 2:
Можете ли вы показать, как назначаются «topLeft» и «bottomRight»? – elnigno
Форме присваивается местоположение, основанное на его центральном положении. Центром прямоугольника являются его мировые координаты. topLeftX рассчитывается, принимая половину размера квадрата и вычитая его из своего положения в мире. topleftY рассчитывается, принимая свое мировое положение и добавляя половину его высоты. BottomRightX рассчитывается, принимая половину ширины и добавляя к мировому положению X объекта. BottomRightY рассчитывается, принимая мировое положение и вычитая половину высоты. Получение половины высоты и ширины производится только путем получения общей ширины или высоты и деления на два. – Euthyphro
Думаю, я должен принять ваше слово. :) Вы подтвердили, что значения координат - это то, что вы ожидаете от них во время инструкции 'if'? – elnigno