Java 在LibGdx中,演员远离摄影机,而不是在X轴上移动

Java 在LibGdx中,演员远离摄影机,而不是在X轴上移动,java,camera,libgdx,Java,Camera,Libgdx,我想要一台摄像机来跟踪一个演员。我已经看了很多关于如何做到这一点的教程,但我发现了一个奇怪的错误。 我创建的名为“骷髅”的演员似乎远离摄影机,而不是X轴。 相机在静态精灵上移动很好 我用了3种不同的方式来移动演员。它们似乎都不起作用。 Sry也适用于坏代码 播放屏幕: 公共类PlayScreen实现屏幕{ 正交摄影机; 表格; 阶段性; 视口; 私人游戏; 骨骼; 公共播放屏幕(MyGdxGame游戏){ 这个游戏=游戏; 摄像头=新的正交摄像头(1f,(Gdx.graphics.getHeig

我想要一台摄像机来跟踪一个演员。我已经看了很多关于如何做到这一点的教程,但我发现了一个奇怪的错误。 我创建的名为“骷髅”的演员似乎远离摄影机,而不是X轴。 相机在静态精灵上移动很好

我用了3种不同的方式来移动演员。它们似乎都不起作用。 Sry也适用于坏代码

播放屏幕:

公共类PlayScreen实现屏幕{
正交摄影机;
表格;
阶段性;
视口;
私人游戏;
骨骼;
公共播放屏幕(MyGdxGame游戏){
这个游戏=游戏;
摄像头=新的正交摄像头(1f,(Gdx.graphics.getHeight()/Gdx.graphics.getWidth());
viewport=new-FitViewport(Gdx.graphics.getWidth(),Gdx.graphics.getHeight(),camera);
骨架=新骨架();
阶段=新阶段(新屏幕视口());
setPosition((Gdx.graphics.getWidth()/2)-(skeleton.getWidth()/2),((Gdx.graphics.getHeight()/1.75f)-(skeleton.getHeight()/1.4f));
阶段。添加者(骨架);
Gdx.input.setInputProcessor(阶段);
}
@凌驾
公共无效渲染(浮动增量){
Gdx.gl.glClearColor(1,0,0,1);
Gdx.gl.glClear(GL20.gl\u颜色\u缓冲\u位);
skeleton.moveRight();
camera.position.x=skeleton.getX()+skeleton.getOriginX();
camera.position.y=skeleton.getY()+skeleton.getOriginY();
camera.update();
game.batch.setProjectionMatrix(camera.combined);
Gdx.input.setInputProcessor(阶段);
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}
@凌驾
公共空心调整大小(整型宽度、整型高度){
视口。更新(宽度、高度);
}
骨干演员:

public类骨架扩展了Actor{
喷雾批;
纹理图像;
int帧=0;
int-zeile=0;
纹理区域[][]区域;
公共雪碧;
公共骨架(){
批次=新的SpriteBatch();
img=新纹理(Gdx.files.internal(“战士骨架动画/Walking/walk.png”);
//动画
区域=纹理区域分割(img,572953);
精灵=新精灵(区域[0][0]);
代码使其成为动画。。。
(工作正常,不要在这里进一步放大代码)
setBounds(sprite.getX()、sprite.getY()、sprite.getWidth()、sprite.getHeight());
}
公权{
//第一种移动方式
MoveByAction mba=新的MoveByAction();
mba.设定金额(10f,0f);
工商管理硕士学位(1/10f);
skeleton.this.addAction(mba);
//第二种移动方式
//this.setPosition(this.getX()+10,this.getY());
//setBounds(sprite.getX()、sprite.getY()、sprite.getWidth()、sprite.getHeight());
//第三种移动方式
//雪碧(1);
//setBounds(sprite.getX()、sprite.getY()、sprite.getWidth()、sprite.getHeight());
}
@凌驾
受保护的无效位置已更改(){
设置位置(getX(),getY());
super.positionChanged();
}
@凌驾
公共作废提取(批处理、浮动parentAlpha){
雪碧.抽(批);
}
@凌驾
公共无效法案(浮动三角洲){
超级法案(德尔塔);
}
}
我尝试过独立于骨架演员移动摄影机,如下所示:
camera.position.x=camera.position.x+100;
,即使摄影机的移动速度比演员快,演员也会离开摄影机

我还试着用骷髅演员身上精灵本身的坐标移动相机,但还是有同样的错误


提前谢谢。

我找到了一个方法来修复它

如果我移动相机本身而不是演员,我会得到演员被移动的效果。这证明我的演员和我的相机是绑定在一起的


我仍然很想知道为什么会这样,以及如何修复它。

我找到了一种方法来修复它

如果我移动相机本身而不是演员,我会得到演员被移动的效果。这证明我的演员和我的相机是绑定在一起的

我仍然很想知道为什么会这样,以及如何修复它