gpt4 book ai didi

java - 2D 游戏,随机创建的对象

转载 作者:行者123 更新时间:2023-11-30 01:38:13 26 4
gpt4 key购买 nike

我在 libgdx 中开发游戏已有一段时间了。我的项目包括一艘 spaceship 和一些 meteor 。

这是我做的课

public class asteroid {
public static final int var=1080-150;
private Sprite sprite_asteroid;
private int posAsteroidx,posAsteroidy;
Rectangle asteroidBounds=new Rectangle();
private Random rand;

public asteroid(){
sprite_asteroid=new Sprite(new Texture(Gdx.files.internal("asteroid.png")));
rand = new Random();
posAsteroidx=rand.nextInt(var);
posAsteroidy=1920+rand.nextInt(1920);
asteroidBounds.set(posAsteroidx,posAsteroidy,150,150);
}
public void reposition(){
posAsteroidy-=10;
}

在游戏画面中我创建了一个数组 private Array<asteroid> asteroids;并添加了一些 for (int i=1;i<=asteroidCount;i++)
asteroids.add(new asteroid());

我在游戏屏幕的某处检查与飞船的碰撞

        for (asteroid asteroid : asteroids) {
if (asteroid.asteroidBounds.overlaps(shipbounds))
{
asteroid.setPosAsteroidx(rand.nextInt(1080-150));
asteroid.setPosAsteroidy(1920 + rand.nextInt(1920));
shipLives--;
break;
}

}

所以,碰撞工作正常,但问题是有时(好吧,也许很多次)我的 meteor 重叠......我应该怎么做才能避免 meteor 重叠?

最佳答案

防止重叠的最佳方法类似于检查船舶碰撞的方法。您需要遍历小行星并将其与其他小行星进行比较,看看它们是否重叠。

尝试这样的事情:

for (int i = 0; i < asteroids.size() - 1; i++) {
for (int j = i + 1; j < asteroids.size(); j++) {
if (asteroids[i].asteroidBounds.overlaps(asteroids[j].asteroidBounds))
//Insert collision handling code here
}
}

您必须稍微修改一下 if 语句。我不确定我是否正确使用了您的 overlaps 函数或 astroidBounds。希望对您有所帮助!

关于java - 2D 游戏,随机创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34860979/

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