gpt4 book ai didi

java - Android Studio LibGDX 代码重复问题

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

我的游戏几乎完全正常工作,但是,我想为我的游戏创建一个无尽的关卡,就像 Flappy Bird,这是添加敌人的代码 collisionList.add(new colonisionEntity(world, collsionTexture, 6, 1)); 这是添加地板的代码 groundList.add(new groundEntity(world, groundTexture, overgroundTexture,overground2Texture ,10, 10 ,18)) ; 我希望这些代码行像循环一样重复,而不需要一遍又一遍地添加它们,例如

`groundList.add(new groundEntity(world, groundTexture, overgroundTexture,overground2Texture ,10, 10 ,13));`

groundList.add(new groundEntity(world, groundTexture, overgroundTexture,overground2Texture ,25, 10 ,20));
groundList.add(new groundEntity(world, groundTexture, overgroundTexture,overground2Texture ,10, 7 ,12));
groundList.add(new groundEntity(world, groundTexture, overgroundTexture,overground2Texture ,10, 10 ,16));

我该怎么做?我的比赛结果是这样的https://www.youtube.com/watch?v=ql-Mr81fZ0U,转到2:23-2:31分钟看看我的意思

我只是希望它添加障碍并一遍又一遍地重复它们,地面代码也是如此。

最佳答案

这完全取决于您想要什么以及您希望事物如何排列或随机排列。如果您了解 update() 方法在每个帧中都会被调用,那么您可以在其中添加语句来检查何时要“生成”某些内容。如果不再需要它们,从列表中删除项目也很重要,这样垃圾收集器可以收集它们以释放内存。如果您使用一次性元素,您也应该将其丢弃。

一种方法可以是一个计时器,它可以跟踪......是的,时间。当达到一定时间时,您会产生一些东西(添加到您的列表中)。一旦您的相机移过某个对象,您就可以将其从列表中删除。

float timer = 0;
float spawnTime = 4;
private void spawnEntity()
{
//Increment timer by the duration since the previous frame
timer += Gdx.graphics.getRawDeltaTime();
//Compare to spawntime
if (timer >= spawnTime)
{
//Spawn your object
groundList.add(new groundEntity(world, groundTexture, overgroundTexture,overground2Texture ,25, 10 ,20));
//But you will probably want to spawn something on the right, just outside of your screen view.

//This is the right side of your vp in the world. Depending how you draw you can add some more to it.
float spawnX = camera.position.x + camera.viewportWidth / 2;
//Then use this to spawn your object, since you hardcoded stuff I have no idea where to put it.

//Now reset timer
timer-= spawnTime;

//And perhaps randomize the spawnTime? (between 2 and 4 seconds)
spawnTime = random.nextFloat() * 2 + 2;
}
}

只需将其称为每个更新循环即可。目前它将使用您的硬编码数字进行添加。 groundList.add(new groundEntity(world, groundTexture, overgroundTexture,overground2Texture ,25, 10 ,20)); 因此,如果 25、10 或 20 负责定位,它只会覆盖实体。将 float spawnX 放在 groundlist.add(...) 前面,并使用 spawnX 作为 X 定位。如果您有移动摄像机,它将从右侧进入。如果您还没有移动相机,请将这两行添加到您的更新中以进行测试。

camera.position.x += 1;
camera.update();

关于java - Android Studio LibGDX 代码重复问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35635837/

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