我不知道我做错了什么...我想我有脑冻结。我真的很努力将我的脊柱对象像素坐标转换为世界坐标。我最近将所有的代码转换成与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();
}
}
什么是像素坐标?屏幕坐标? –
是的屏幕坐标... –