我让我的敌人根据随机数生成,这是我写的第一种方式,有时玩家可以躲在一个角落里,但暂时什么也没有出现,让游戏变得简单。我写的第二种方法稍微好一点,因为玩家不能静止不动太久,但这意味着屏幕上其他任何地方都不会产生看起来不正确的东西。
第一个是:
public Weight createWeight() {
decider = Math.random() * 1;
// creates rocks randomly with the lowest chance for l, and the highest chance for m
if (decider <= 0.33) {
// small weight
return new WeightSmall(BitmapFactory.decodeResource(getResources(), R.drawable.weight_s), new Random().nextInt(screenWidth), -10);
} else if (decider <= 0.5 && decider > 0.33) {
// large weight
return new WeightLarge(BitmapFactory.decodeResource(getResources(), R.drawable.weight_l), new Random().nextInt(screenWidth), -10);
} else {
// medium weight
return new WeightMedium(BitmapFactory.decodeResource(getResources(), R.drawable.weight_m), new Random().nextInt(screenWidth), -10);
}
}
第二个:
public Weight createWeight() {
decider = Math.random() * 1;
Random random = new Random();
spawnRange = random.nextInt((player.getX() + player.getWidth()) - (player.getX() - player.getWidth())) + (player.getX() - player.getWidth());
// creates rocks randomly with the lowest chance for l, and the highest chance for m
if (decider <= 0.33) {
// small weight
return new WeightSmall(BitmapFactory.decodeResource(getResources(), R.drawable.weight_s), spawnRange, -10);
} else if (decider <= 0.5 && decider > 0.33) {
// large weight
return new WeightLarge(BitmapFactory.decodeResource(getResources(), R.drawable.weight_l), spawnRange, -10);
} else {
// medium weight
return new WeightMedium(BitmapFactory.decodeResource(getResources(), R.drawable.weight_m), spawnRange, -10);
}
}
我想继续第二种方法,因为它感觉最自然,我只需要有机会在屏幕上的其他地方生成它们。
最佳答案
我想我明白你在说什么。基本上,小怪的产卵位置应该是随机的,但较高的部分应该在玩家周围。
好吧,您需要提出一个指数方程来计算出距玩家的生成距离。因此,您想要获取玩家距离,并用随机值作为种子。要获得这个种子,您需要生成一个随机数,然后将其与自身相乘。这为您提供了与玩家之间产生生物的距离。
例如,如果您的游戏方 block 是 50x50
。
玩家位于0,0
。
生成 0-5
之间的随机数,并与其自身相乘。
0-1 = within 1 block
1-2 = within 4 blocks
2-3 = within 9 blocks
3-4 = within 16 blocks
4-5 = within 25 blocks
这意味着您有 60% 的机会让小怪在玩家所在的游戏区域 40% 的范围内生成。
您需要调整自己使用的确切公式,并显然得出合适的游戏区域大小。
这实际上效果很好,因为这意味着如果玩家站在墙边,一半的盒子在游戏区域之外,在这种情况下,你会在墙上生成生物。因此,小怪有一半大小的生成区域,这将有助于防止玩家在角落里露营(这将为它们提供 1/4 大小的生成区域)。
关于java - 寻找如何均匀生成敌人的想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21338137/