首页 > 解决方案 > 在 Unity 中使用百分比触发事件

问题描述

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

float random = Random.value;

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

因此,我们将不胜感激为实现这一目标提供的任何帮助。

标签: c#unity3d

解决方案


执行此操作的经典方法是随机选择 0 和 1 之间的值,然后检查该值是否严格低于您的机会。所以在你的情况下:

var random = new Random(seed);
var chanceOfSpawningKremlin = 0.75;

if(random.NextDouble() < chanceOfSpawningKremlin)
{
    SpawnBeast();
}

编辑:

我忘记了 Unity 有自己的Random类。而且该类非常不稳定,因为它在两端都将值返回0.0到INCLUSIVE 。1.0但是,只要您的概率不等于1.0,您就可以忽略它并像这样使用它:

var chanceOfSpawningKremlin = 0.75f;

if(Random.Value() < chanceOfSpawningKremlin)
{
    SpawnBeast();
}

如果您的概率曾经是,1.0您需要对其进行特殊处理,并且一如既往地成功。

请注意,在这两种情况下,您都使用概率作为 和 之间的值,0.01.0不是百分比。如果您想将值保留为百分比,则100.0在概率测试中使用时将它们除以。


推荐阅读