【发布时间】:2017-09-01 12:00:54
【问题描述】:
我不知道我做错了什么...我认为我的大脑冻结了。我真的很努力将我的脊椎对象像素坐标转换为世界坐标。我最近将所有代码转换为使用 Ashley ecs,但我似乎无法让我的脊椎对象显示在正确的位置。 我有一个系统可以处理我的脊椎对象的渲染和定位,但我似乎无法让它显示在正确的位置。 我希望有人能指出我正确的方向!
我已经包含了我的脊椎渲染系统代码...希望您能提供帮助! 我想将脊椎对象放置在与使用世界坐标的盒子 2d 对象相同的位置。但脊椎正在使用像素坐标。我还附上了一张图片,向您展示正在发生的事情。 (屏幕右中附近的灰色方块是我希望我的脊椎对象所在的位置!)
阿马里诺
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();
}
}
【问题讨论】:
-
什么是像素坐标?屏幕坐标?
-
是屏幕坐标...