- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一些困难,因为我不知道如何高效地编码。我正在创建一个垂直滚动射击游戏,我想生成大量敌人。在 map 的某些 y 坐标处并给它们一个特定的 x 坐标。如果一直在用几个敌人进行测试,在我的 Enemy 类中,我现在使用的代码如下所示:
if (Background.bgY == -3972 && active == 0) {
active = 1;
type = 1;
centerX = enemyXstart4;
KnightmareGame.activated = 1;
KnightmareGame.activatedatY = Background.bgY;
}
如果滚动的背景在坐标 Y 上,它基本上是寻找,激活类型 1 的敌人(炸弹)并给它起始坐标 centerX,activatedatY。这意味着对于我编写此代码块的每个敌人...
然后在我的 KnightmareGame 类(它包含在屏幕上绘制敌人的例程)中,我手动绘制每个敌人,看起来像这样:
g.drawImage(currentBomb, bo1.getCenterX(), bo1.getCenterY(), this);
g.drawImage(currentBomb, bo2.getCenterX(), bo2.getCenterY(), this);
g.drawImage(currentBomb, bo3.getCenterX(), bo3.getCenterY(), this);
在我的碰撞检测方法中,我还逐一检查每个敌人:
if (projectileRect.intersects(KnightmareGame.bo1.bombRectangle)) {
visible = false;
if (KnightmareGame.bo1.health > 0) {
KnightmareGame.bo1.health -= 1;
}
if (KnightmareGame.bo1.health == 0) {
Enemy.animateFire= true;
等等等等
问题是敌人的总数超过了 50,所以如果我继续对它们 1 对 1 编码,代码会变得非常困惑。
我在想的是,我可能会制作一个包含所有 y 坐标的数组列表,我想在其中生成具有后续 x 坐标的敌人。例如,在 -3900 处,我想在 x 坐标 200 处生成一个敌人。在 -3800 处,在 x 坐标 300 处,等等。所以一个数组列表,其中每个位置都包含 2 个变量 (x,y)
g.drawImage(currentBomb, bo1.getCenterX(), bo1.getCenterY(), this);
我正在考虑一个循环,但不知道代码如何...有人知道怎么做吗?或者,也许我应该以不同于我现在所想的方式来做?
非常感谢您的帮助!
最佳答案
创建一个 ArrayList<Enemy> enemies;
然后使用
for (Enemy bo : enemies) {
// logic for each enemy.
}
对于要检查碰撞的大量实体,通常是 broadphase algorithm被使用。
看看你的情况是否需要。
您也可以尝试一些空间优化,例如 quad-trees .
这些可能只是 wiki 链接,但如果您知道要搜索的内容,我想您可以进一步搜索。
希望这对您有所帮助。
祝你好运。
关于java - 如何在 Java 中高效地编写大量/多个敌人的生成和碰撞检测代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22781713/
好的,这就是我的错误:'Enemy' 未在此范围内声明。错误在 map.h 文件中,即使 map.h 包含 enemy.h,如图所示 #ifndef MAP_H_INCLUDED #define MA
这个问题已经有答案了: How to make enemy follow player in pygame? (2 个回答) Enemy doesn't follow player (pygame)
我试图让我的 Canvas 游戏中的 Sprite 不断向玩家移动,直到它发生碰撞。执行此操作的相关函数是 update() 函数: Enemy.prototype.update = function
我在无休止的运行游戏中遇到了麻烦,主要是我创建的两种敌人的产卵,当我们调用函数“startDifficultyTimer”时,有时会产生两个敌人。 基本上,当我调用该函数时,游戏会在同一行生成 2 个
从性能角度来看,什么是最正确的 - 敌人和武器之间的交互算法(这里的子弹可能更正确)? 每个 Sprite 的每一个子弹都应该通过“collidesWith”方法检查碰撞情况,并在完整的敌人列表上进行
遇到了一个问题,即敌人会向玩家开火,但似乎总是开到高处或向玩家的一侧,即使玩家是静止的并且没有移动。我是不是在我的代码中做错了什么导致了这个疯狂的问题,或者它只是一个随机的烦人的错误? 为播放器使用相
我是新来的快速编程。我想使用类节点将敌人生成到随机位置。我试图搜索随机生成敌人的代码,但它似乎与我的代码无关。 这是我搜索随机生成的代码。 import SpriteKit class GameSce
我最近遇到了一些问题,只是在我正在制作的游戏中传递对对象/敌人的引用,我想知道我是否使用了错误的方法。 我的主要问题是处理敌人和物体,而其他敌人或玩家可能仍然与它们有联系。 例如,如果你有一只兔子和一
在我的 2d 游戏中,我有一个金币和铜币的概念如下: when normal enemies die ..they drop a random gold or copper coin. Now whe
我是新来的,所以我希望你能帮助我。 我正在学习制作简单的 cocos2d 游戏的教程 Ray Wenderlich's Tutorial 我在另一个游戏中实现了它,一个像涂鸦跳跃这样的跳跃游戏。 在上
我是一名优秀的程序员,十分优秀!