c# - 在 Unity 中使用百分比触发事件
问题描述
我正在开发一款游戏,我想根据百分比触发事件。所以,根据我的英雄的行动,发生的机会会上升或下降。问题是,假设因为你如何玩变量“ChanceOFSpawningKremlin”是 75%,我不确定如何在函数中使用 75% 来导致发生,我正在考虑选择一个随机数,如果该数字是在 0 到 75 之间然后导致发生,但是由于某种原因,我认为这不是最好的方法。
float random = Random.value;
if (random<chanceOfSpawningKremlin)//75%
{
spawnBeast();
}
因此,我们将不胜感激为实现这一目标提供的任何帮助。
解决方案
执行此操作的经典方法是随机选择 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.0
而1.0
不是百分比。如果您想将值保留为百分比,则100.0
在概率测试中使用时将它们除以。
推荐阅读
- typescript - 续集导入遇到 TypeScript 问题
- android - 如何忽略缺少电池的无效数据?
- asp.net-identity - 如何使用约束的 AspNetCore.Identity 自定义字段。
- sql - 在 Hive SQL 中选择上一个值
- android - 将 JSON 用于 Google 地图:标记未显示
- c++ - fstream 在替代控制字符处停止读取
- css - CSS 属性 background-clip:text 在 chrome 或 safari 中对我不起作用
- kubernetes - KOPS 集群上的 Argo Workflow 分布
- javascript - 上传 csv 文件并将多个标记添加到谷歌地图
- python - 根据名称 pandas python 对某些列进行乘法和求和