我不知道我做錯了什麼...我想我有腦凍結。我真的很努力將我的脊柱對象像素座標轉換爲世界座標。我最近將所有的代碼轉換成與Ashley ecs一起工作,我似乎無法讓我的脊柱對象顯示在正確的位置。 我有一個處理我的脊柱物體的渲染和定位的系統,但我似乎不能讓它顯示在正確的位置。 我希望有人能指出我正確的方向!脊柱二維座標系統libgdx
我已經包括我的脊柱渲染系統的代碼...希望你能幫助! 我想將脊柱對象放置在與使用世界座標的我的方框2d對象相同的位置。但脊柱正在使用像素座標。我還加入了一張圖片來展示你正在發生的事情。 (靠近屏幕的右側中間的灰色方塊是我希望我的脊椎對象是!)
Amarino
public class SpineRenderSystem extends IteratingSystem {
private static final String TAG = com.chaingang.freshstart.systems.SpineRenderSystem.class.getName();
private PolygonSpriteBatch pBatch;
SkeletonMeshRenderer skeletonMeshRenderer;
private boolean process = true;
BodyComponent bodyComp;
Spine2DComponent spineComp;
public SpineRenderSystem(PolygonSpriteBatch pBatch){
super(Family.all(RenderableComponent.class, Spine2DComponent.class, PositionComponent.class).get());
this.pBatch = pBatch;
skeletonMeshRenderer = new SkeletonMeshRenderer();
skeletonMeshRenderer.setPremultipliedAlpha(true);
}
@Override
protected void processEntity(Entity entity, float deltaTime) {
bodyComp = Mappers.body.get(entity);
spineComp = Mappers.spine2D.get(entity);
float offsetX = 100.00f/Gdx.graphics.getWidth(); //100 equal world width
float offsetY = 50.00f/Gdx.graphics.getHeight(); //50 equals world height
pBatch.begin();
spineComp.skeleton.setX((bodyComp.body.getPosition().x/offsetX));
spineComp.skeleton.setY((bodyComp.body.getPosition().y)/offsetY);
skeletonMeshRenderer.draw(pBatch,spineComp.skeleton);
//spineComp.get(entity).skeleton.setFlipX(player.dir == -1);
spineComp.animationState.apply(spineComp.skeleton);
spineComp.skeleton.updateWorldTransform();
pBatch.end();
}
}
什麼是像素座標?屏幕座標? –
是的屏幕座標... –