2015-07-05 3 views
0

Я разрабатываю простую игру, в которой мне нужно обнаружить столкновение объектов, я уже знаю, как обнаружить столкновение между двумя спрайтами, но теперь мне нужно обнаружить столкновение между спрайтом a линия, нарисованная с использованием метода ShapeRenderer. Скажем, у меня есть спрайт, определенный как это:Обнаружение столкновения между строкой ShapeRenderer и спрайтом в LibGdx

Texture texture = new Texture(myPath); 
TextureRegion textureRegion = new TextureRegion(texture, w, h); 

и линии, как это:

shapeRenderer.begin(ShapeType.Line); 
shapeRenderer.line(x1, y1, x2, y2); 
shapeRenderer.end(); 

Есть ли способ определить, когда эти 2 два объекта сталкиваются?

ответ

2

Не зная, как вы обнаруживаете столкновения со спрайтами, я бы предложил пару различных вариантов, которые могут работать.

  1. Если вы используете box2d для текущего обнаружения столкновений, и вы не имеете много линий для рендеринга с shapeRenderer, вы могли бы рассмотреть вопрос о создании тела/приспособления для представления линии, сделать его датчик и используйте контакт-слушатель, как и для других органов.

  2. Возможно, более простой подход может заключаться в использовании класса Intersector libgdx и подталкивания туда для методов, которые могут вам помочь. Так, например,

    общественного статический логический intersectLinePolygon (Vector2 p1, Vector2 p2, Polygon многоугольник)

может работать для вас, где p1 ваш (x1, y1), p2 ваши (x2, y2) и полигональные карты к тексту.

+0

Я абсолютно поддерживаю ответ выше. Поскольку ShapeRenderer - это просто визуальная вещь, например SpriteBatch, вам определенно придется каким-то образом вернуть свои объекты столкновения в фоновом режиме. Тогда вам не придется рисовать линию вообще. Я думаю, что существует также метод пересечения для одновременного пересечения двух полигонов! – TheWhiteLlama

Смежные вопросы