У меня есть изображения, как следующее:обнаруживая Texture Столкновение
Я включил черную рамку, чтобы показать ширину и высоту текстуры, но они не являются на самом деле часть моего образа.
Сейчас я использую 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);
}
Когда два из этих объектов конфликтуют , Я хочу вернуть true boolean. Поэтому я делаю свою проверку на столкновение следующим образом:
if(Intersector.overlaps(rectanlge1, rectangle2)){
System.out.println("intersect!");
return false;
}
Я создаю прямоугольники в зависимости от высоты и ширины области текстуры.
Выполнение этого способа отлично работает, однако проблема заключается в том, что текстуры на самом деле не просто прямоугольники. Например, я должен иметь следующий случай, когда они не сталкиваются, потому что «зеленые и синие области» не сталкиваются.
Это, очевидно, столкновение в моем коде, но я не хочу, чтобы это было так зеленые и синие области не касались друг друга вообще. Как я могу достичь этого с помощью libgdx и scene2d?
Довольно, что вы должны использовать различные спрайты для зеленого и синего цвета. Я действительно не помню, как читал о настройке идеального коллаборации пикселей в LibGdx, попробуйте исследовать это. –