我试图学习libGDX游戏开发的一些简单原则,并在下面的代码中获得了吸吮。我已经将更新和渲染的任务分开,但不太确定如何将它们放在一起。我所要做的就是绘制一个在屏幕上移动的简单矩形。我的代码如下所示。除了渲染,一切都正常。
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();
}
}
您需要将相机应用于形状渲染器。
将ShapeRenderer.setProjectionMatrix(cam.combinated);
放在ShapeRenderer.begin
之前。
我只是启动libgdx,这看起来很简单,但我不明白。screen对象中的render方法将调用WorldRenderer中的render方法: //屏幕呈现方法
我正在编程一个小游戏,它是基于瓷砖的。但当我渲染它的时候,有时那些瓷砖之间的一个小空间是可见的,(绿色)背景是暴露的(可以在视频中看到)。 我想知道,是否有一些双缓冲技术,可以解决这个bug,但我读到,双缓冲已经实现了。
我想我不明白render方法是如何工作的。 从我在网上读到的/在youtube教程上看到的,我发现render方法是一个循环函数,您可以使用它来保持游戏的更新和读取用户的输入。当您想要在屏幕中绘制一些东西时,您可以使用此方法,并且在绘制任何东西之前清除屏幕。 但是如果我想要静止地绘制一些东西,那么在render方法之外绘制它不是更好吗(这样计算机就不必多次清除屏幕并重新绘制所有东西)?我错过了什么
我是一个初学者React开发人员,我对这个特定的代码片段有一个问题。 问题: 虽然我直接复制了虚拟数据的值并将其作为单独的子项呈现,但并不是所有的虚拟数据都被呈现 我特意选择使用useRef而不是useState,因为在用户添加或编辑他们想要的任何链接之后,我想将keyRef发送到NoSQL数据库;然而,当我使用useState()时,它给了我陈旧的状态问题,其中包含所有链接的数组没有不断更新。
我试图用libGdx和MVC模式制作一个游戏。我有一个我的游戏模型,我打算一直运行,而不是我的渲染方法从应用程序。因此,我在从libgdx扩展Game的类中做了这样的工作:首先,我将连续呈现设置为false,为了调用呈现方法,我使用gamescreen作为模型的监听器。
我最近开始了我的第一个libGDX游戏,一切都进行得很好,所有的东西都呈现得很好,但是大约一分钟后什么都没有呈现,呈现调用仍然被发出,并且spritebatch工作得很好,我只是留下了一个黑屏,我甚至把'gl clearcolor()'改成了但我仍然留下了一个黑屏。我不知道这会是什么。 我的主要类: 编辑:我们已经确定,经过一段时间SpriteBatch渲染一个黑色屏幕的红色清晰颜色,它也停止渲染