Java libGDX更新和呈现任务分离
我正在尝试学习libGDX游戏开发的一些简单原则,并开始学习下面的代码。我已经将更新和渲染任务分开,但不太确定如何将它们结合在一起。我只想画一个简单的矩形,在屏幕上移动。我的代码如下。除了渲染之外,一切都正常Java libGDX更新和呈现任务分离,java,android,libgdx,Java,Android,Libgdx,我正在尝试学习libGDX游戏开发的一些简单原则,并开始学习下面的代码。我已经将更新和渲染任务分开,但不太确定如何将它们结合在一起。我只想画一个简单的矩形,在屏幕上移动。我的代码如下。除了渲染之外,一切都正常 package com.mygdx.gameobjects; import com.badlogic.gdx.math.Rectangle; public class Egg { private Rectangle egg; public Egg(){ egg = new
package com.mygdx.gameobjects;
import com.badlogic.gdx.math.Rectangle;
public class Egg {
private Rectangle egg;
public Egg(){
egg = new Rectangle(0, 0, 20, 20);
}
public void update(float delta) {
egg.x++;
if (egg.x > 137) {
egg.x = 0;
}
}
public Rectangle getEgg() {
return egg;
}
}
使用的更新方法:
package com.mygdx.gameworld;
import com.badlogic.gdx.Gdx;
import com.mygdx.gameobjects.Egg;
public class GameWorld {
private Egg egg;
public GameWorld() {
egg = new Egg();
}
public void update(float delta) {
Gdx.app.log("GameWorld", "update");
egg.update(delta);
}
public Egg getEgg() {
return egg;
}
}
package com.mygdx.gameworld;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.mygdx.gameobjects.Egg;
public class GameRenderer {
private GameWorld myWorld;
private OrthographicCamera cam;
private ShapeRenderer shapeRenderer;
private Egg rect;
public GameRenderer(GameWorld world) {
myWorld = world;
cam = new OrthographicCamera();
cam.setToOrtho(true, 136, 204);
shapeRenderer = new ShapeRenderer();
shapeRenderer.setProjectionMatrix(cam.combined);
}
public void render() {
Gdx.app.log("GameRenderer", "render");
Gdx.gl.glClearColor(0, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
shapeRenderer.setColor(255 / 255.0f, 109 / 255.0f, 120 / 255.0f, 1);
shapeRenderer.rect(myWorld.getEgg().x, myWorld.getEgg().y,
myWorld.getEgg().width, myWorld.getEgg().height);
shapeRenderer.end();
}
}
使用的渲染方法:
package com.mygdx.gameworld;
import com.badlogic.gdx.Gdx;
import com.mygdx.gameobjects.Egg;
public class GameWorld {
private Egg egg;
public GameWorld() {
egg = new Egg();
}
public void update(float delta) {
Gdx.app.log("GameWorld", "update");
egg.update(delta);
}
public Egg getEgg() {
return egg;
}
}
package com.mygdx.gameworld;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.mygdx.gameobjects.Egg;
public class GameRenderer {
private GameWorld myWorld;
private OrthographicCamera cam;
private ShapeRenderer shapeRenderer;
private Egg rect;
public GameRenderer(GameWorld world) {
myWorld = world;
cam = new OrthographicCamera();
cam.setToOrtho(true, 136, 204);
shapeRenderer = new ShapeRenderer();
shapeRenderer.setProjectionMatrix(cam.combined);
}
public void render() {
Gdx.app.log("GameRenderer", "render");
Gdx.gl.glClearColor(0, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
shapeRenderer.setColor(255 / 255.0f, 109 / 255.0f, 120 / 255.0f, 1);
shapeRenderer.rect(myWorld.getEgg().x, myWorld.getEgg().y,
myWorld.getEgg().width, myWorld.getEgg().height);
shapeRenderer.end();
}
}
您需要将相机应用于形状渲染器
放置
shaperender.setProjectionMatrix(cam.combined)代码>就在shaperender之前。开始
谢谢您的帮助。没用。还有其他建议吗?你确定eg my的坐标在摄像机的视野内吗?这是我能想到的唯一的另一件事。坐标肯定在摄像机的视野中。如果我直接在GameWorld类中编写Egg类代码,那么一切都很好。但是我们的想法是让游戏世界只更新。也许你可以为游戏世界和鸡蛋添加绘图代码,这样我们就可以看到哪里出了问题。