【发布时间】:2015-08-14 13:17:33
【问题描述】:
我的游戏设置了这个屏幕,我看到了我创建的演员。
但是谁能告诉我为什么相机似乎没有移动?当我按下左键时,我希望演员向右移动。
Gdx.input.isKeyPressed(Input.Keys.LEFT) 确实解析为 true,并且确实调用了 translate 函数。
public class MainScreen implements Screen {
private Stage mainStage;
private Camera orthCamera;
@Override
public void show() {
orthCamera = new OrthographicCamera();
mainStage = new Stage(new ScreenViewport());
mainStage.getViewport().setCamera(orthCamera);
MyGameActorObject s = new MyGameActorObject();
s.setPosition(100, 100);
mainStage.addActor(s);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0,0,0,1); //sets clear
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
processKeyboardInput();
mainStage.act(delta);
mainStage.draw();
}
private void processKeyboardInput()
{
if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) {
orthCamera.translate(-30, 0, 0);
orthCamera.update();
}
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
mainStage.dispose();
}
}
我正在努力实现能够使用键盘输入在 2d 游戏世界中平移。
这是自定义 Actor 对象的内容:
public class MyGameActorObject extends Actor
{
@Override
public void act(float delta) {
super.act(delta);
}
@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
ShapeRenderer r = new ShapeRenderer();
r.begin(ShapeRenderer.ShapeType.Filled);
r.setColor(Color.RED);
r.circle(this.getX() - 50.0f, this.getY() - 50.0f, 100.0f);
r.end();
}
}
【问题讨论】:
-
按左键有什么反应吗?
-
isKeyPressed在您期望的时候返回 true 吗? -
也许可以尝试使用 ScreenViewport (example) 内部创建的相机
-
那段代码的结果相同。
-
这与我的游戏对象有关吗?就像我使用 Image actor 时一样,它可以正常工作。