使用百分比触发Unity中的事件

时间:2018-08-11 14:30:15

标签: c# unity3d

我正在开发游戏,因此我想根据百分比触发事件。因此,根据我的英雄的动作,发生的可能性会上升或下降。问题是,可以说由于您如何播放变量“ ChanceOFSpawningKremlin”为75%,我不确定如何在函数中使用75%来引起事件,我在考虑选择一个随机数,如果该数字为在0到75之间会导致发生,但是由于某种原因,我认为这不是最好的方法。

float random = Random.value;

 if (random<chanceOfSpawningKremlin)//75%
 {
    spawnBeast();
}

因此,将感谢您为实现此目的提供的任何帮助。

1 个答案:

答案 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.01.0之间的值,而不是百分比。如果您希望将值保留为百分比,那么在概率测试中将其除以100.0