Определить координаты внутри фигуры - PullRequest
0 голосов
/ 10 декабря 2018

Theres 2 части моей проблемы, и они связаны.У меня странная форма на моем интерфейсе, показанном ниже, я пытаюсь случайным образом создавать мувиклипы в пределах его границ, но у меня возникают некоторые проблемы с поиском хорошего способа сделать это. WeirdShape

Вопрос 1 : я могу запустить условие If, чтобы проверить с помощью bitMapData.hitTest, чтобы увидеть, имеет ли мувиклип случайное появление в пределах этой фигуры, если он не просто повторяет попытку с новым набором случайных координат.Однако есть ли лучший способ?Как способ принимать во внимание только координаты внутри фигуры?За один раз будет много MC, поэтому я надеюсь уменьшить нагрузку или, по крайней мере, найти эффективный способ сделать это вычисление.

Вопрос 2 : MovieClips появились вэта форма в конечном итоге будет иметь механизм обнаружения столкновений, который будет отталкиваться при взаимодействии с ним. Есть ли способ удержать их в этой форме с помощью какого-либо обнаружения границ?

Если бы это был квадрат, мы могли бы легко их проконтролировать на всех 4 ребрах,но не с этой формой.В настоящее время я думаю о том, чтобы снова использовать bitMapData.hitTest для обнаружения выхода за пределы после отталкивания, но как узнать, какой Point () является ближайшим «краем» этой фигуры для возврата MC в?

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Большая проблема заключается в том, сколько процессоров или графических процессоров использует код.Вы пытаетесь избежать обнаружения столкновений.При обнаружении столкновений код выполняет вычисления для определения краев объекта.Это должен быть последний вариант.

В большинстве случаев вам не нужно обнаруживать столкновения.Вы знаете, где все и как оно велико.У всего есть центральная точка, и сравнение простых числовых координат - это легкий способ проверить, есть ли необходимость в дальнейшей проверке.

Когда вещи приближаются друг к другу, вам нужно только обнаружить столкновение в непосредственной близости от объекта.Посмотрите, как ваша форма помещается в коробку, которую легко проверить на столкновения?Этот блок должен пройти проверку на столкновение до того, как внутри него появится фактическая зубчатая форма.

enter image description here

Да, этот блок обнаружения столкновения должен быть нарисован или нанесен на карту, но это сделанокогда объект определен, а не когда игра ведется.Если вы используете спрайт-листы, сохраняйте xml полей или кружков вокруг фигур.

0 голосов
/ 11 декабря 2018

Для вопроса 1 : я собираюсь исходить из предположения, что у вас есть некоторые геометрические данные о форме.

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

Первая ссылка в Google: https://www.geeksforgeeks.org/how-to-check-if-a-given-point-lies-inside-a-polygon/

Или также можете попробовать более простой метод (за счет выполнения большего количества работы): если вышеуказанная фигура генерируется со всеми квадратами и прямоугольниками, и вы знаете точку и размер всех из них: можете просто выполнить проверку для точки противвсе квадраты и прямоугольники, составляющие форму.

Для вопроса 2 : Как упоминал Органис, я бы пошел с библиотекой, такой как Box2D, чтобы сделать это.Скорее всего, вы потратите кучу времени (чего, возможно, не хотите), если попытаетесь реализовать это самостоятельно.

...