gpt4 book ai didi

java - 游戏屏幕显示黑屏

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:22 24 4
gpt4 key购买 nike

我目前正在编写一款游戏,你必须避开小行星。我必须处理一些困惑的坐标,并且我必须猜测 Sprite 的坐标。我现在有任意单位来描述我的世界。不幸的是,我的游戏屏幕无法正常工作。当我想渲染小行星时,游戏屏幕显示黑屏。

public class GameScreen extends Screen {

private OrthographicCamera cam;
private Spaceship spaceship;
private Asteroids asteroids;
private Background bg;



@Override
public void create() {
// TODO Auto-generated method stub

bg = new Background();
spaceship = new Spaceship();
asteroids = new Asteroids();

float aspectratio = 16/10;

cam = new OrthographicCamera(100, 100 * aspectratio);

cam.position.set(cam.viewportWidth / 2f, cam.viewportHeight / 2f, 0);

cam.update();

}



@Override
public void render(SpriteBatch batch) {
// TODO Auto-generated method stub

cam.update();
batch.setProjectionMatrix(cam.combined);

batch.begin();
bg.render(batch);
spaceship.render(batch);
batch.end();

}

上面显示的代码工作得很好,并向我展示了这一点:

enter image description here

当我在 GameScreen 类中添加小行星的渲染方法时,GameScreen 只是黑色:

    @Override
public void render(SpriteBatch batch) {
// TODO Auto-generated method stub

cam.update();
batch.setProjectionMatrix(cam.combined);

batch.begin();
bg.render(batch);
spaceship.render(batch);
batch.end();

}

enter image description here

小行星类别:

public class Asteroid {

private Vector2 p;
private Vector2 v;

private float mass;
private float radius;

public final float maxV = 200;
public final float minV = 50;

public final float rMin = 10;
public final float rMax = 30;

public final float minX = MyGdxGame.WIDTH;
public final float minY = MyGdxGame.HEIGHT;;

float alpha = MathUtils.random(0, 360);

public Asteroid(float maxX, float maxY, List<Asteroid> asteroids) {

do {

radius = MathUtils.random(rMin, rMax);
masse = radius * radius * radius;

float alpha = MathUtils.random(0, 360);

p = new Vector2(MathUtils.random(minX, maxX), MathUtils.random(minY,
maxY));

float vBetrag = MathUtils.random(minV, maxV);

v = new Vector2(vBetrag * MathUtils.cosDeg(alpha),
vBetrag * MathUtils.cosDeg(alpha));
} while (ueberlappMit(asteroids));

}

private boolean ueberlappMit(List<Asteroid> asteroids) {

for(Asteroid a: asteroids){
if(abstand(a) < radius + a.radius + 10){ //!
return true;
}
}

return false;

}

public void update(float deltaT, float xMin, float xMax, float yMin, float yMax) {
p.x += v.x * deltaT;
p.y += v.y * deltaT;

while(p.x > xMax)
{
p.x -= (xMax - xMin);
}
while(p.x < xMin)
{
p.x += (xMax - xMin);
}
while(p.y > yMax)
{
p.y -= (yMax - yMin);
}
while(p.y < yMin)
{
p.y += (yMax - yMin);
}
}


public float abstand(Asteroid a2) {

return p.dst(a2.p);

}

小行星类别:

public class Asteroids extends Entity {

private final int numberofAsteroids = 150;
private float xMin, xMax, yMin, yMax;
private List<Asteroid> asteroids = new ArrayList<Asteroid>();

private final int cyclicBoundaryConditionsMultiple = 2;

public Asteroids() {


xMin = MyGdxGame.WIDTH * (-cyclicBoundaryConditionsMultiple);
xMax = MyGdxGame.WIDTH * (cyclicBoundaryConditionsMultiple);
yMin = MyGdxGame.HEIGHT * (-cyclicBoundaryConditionsMultiple);
yMax = MyGdxGame.HEIGHT * (cyclicBoundaryConditionsMultiple);


for (int i = 0; i < anzahl; i++) {
Asteroid a = new Asteroid( xMax, yMax, asteroids);
asteroids.add(a);
}

}

@Override
public void update() {

for (Asteroid a : asteroids) {
a.update(Gdx.graphics.getDeltaTime(), xMin, xMax, yMin, yMax);
}

for (int i = 0; i < numberofAsteroids; i++) {

Asteroid a1 = asteroids.get(i);

for (int j = i + 1; j < anzahl; j++) {

Asteroid a2 = asteroids.get(j);

float abstand = a1.abstand(a2);

if (abstand < a1.getRadius() + a2.getRadius()) {

calculateCollision(a1, a2);

}

}

}

}


}

@Override
public void render(ShapeRenderer renderer) {

for (Asteroid a : asteroids) {

System.out.println("RENDER A");

renderer.setColor(0, 0, 0, 1);
renderer.circle(a.getP().x, a.getP().y, a.getRadius());

}

}

最佳答案

非常感谢你们的帮助,我解决了这个问题。方法 private boolean ueberlappMit(List asteroids) 检查小行星是否重叠,如果是这种情况,则应再次创建小行星。问题是,通过选择太高的半径,游戏会陷入 Asteroid 类的 do while 循环中。

关于java - 游戏屏幕显示黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39378730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com