我正在开发游戏,因此我想根据百分比触发事件。因此,根据我的英雄的动作,发生的可能性会上升或下降。问题是,可以说由于您如何播放变量“ ChanceOFSpawningKremlin”为75%,我不确定如何在函数中使用75%来引起事件,我在考虑选择一个随机数,如果该数字为在0到75之间会导致发生,但是由于某种原因,我认为这不是最好的方法。
float random = Random.value;
if (random<chanceOfSpawningKremlin)//75%
{
spawnBeast();
}
因此,将感谢您为实现此目的提供的任何帮助。
答案 0 :(得分:2)
执行此操作的经典方法是随机地均匀选择一个介于0和1之间的值,然后检查该值是否严格低于您的机会。因此,在您的情况下:
var random = new Random(seed);
var chanceOfSpawningKremlin = 0.75;
if(random.NextDouble() < chanceOfSpawningKremlin)
{
SpawnBeast();
}
编辑:
我忘了Unity有自己的Random
类。该类非常糟糕,因为它在两端都将0.0
中的值返回到1.0
INCLUSIVE中。但是,只要您的概率不等于1.0
,您就可以忽略它并像这样使用它:
var chanceOfSpawningKremlin = 0.75f;
if(Random.Value() < chanceOfSpawningKremlin)
{
SpawnBeast();
}
如果您的概率曾经是1.0
,则需要对其进行特殊说明,并且一如既往地成功。
请注意,在两种情况下,您都使用概率作为0.0
和1.0
之间的值,而不是百分比。如果您希望将值保留为百分比,那么在概率测试中将其除以100.0
。