У меня есть изображения, подобные следующему:
Я включил черную рамку, чтобы показать ширину и высоту текстуры, но на самом деле они не являются частью моего изображения.
Сейчас я использую Texture Packer для хранения текстур. В моем коде я нахожу область текстуры, которую хочу, вот так:
TextureRegion enemyRegion = enemyAtlas.findRegion("Enemy");
Используя scene2d в моем актере, у меня есть следующий метод рисования:
@Override
public void draw(Batch batch, float alpha){
batch.draw(textureRegion.getTexture(),this.getX(),getY(),this.getOriginX(),this.getOriginY(),this.getWidth(),
this.getHeight(),this.getScaleX(), this.getScaleY(),this.getRotation(),0,0,
textureRegion.getRegionWidth(),textureRegion.getRegionHeight(),false,false);
}
Когда два из этих объектов сталкиваются, я хочу вернуть истинное логическое значение. Итак, я делаю проверку на столкновение так:
if(Intersector.overlaps(rectanlge1, rectangle2)){
System.out.println("intersect!");
return false;
}
Я создаю прямоугольники на основе высоты и ширины области текстуры.
Такой способ работает нормально, однако проблема в том, что текстуры на самом деле не просто прямоугольники. Например, у меня должен быть следующий случай, когда они не сталкиваются, потому что зеленые и синие области не сталкиваются.
Это, очевидно, коллизия в моем коде, но я не хочу, чтобы она была, поскольку зеленые и синие области на самом деле вообще не соприкасаются. Как я могу добиться этого, используя libgdx и scene2d?