Generate truly random numbers in C# 在C#中生成真正的随机数

huangapple go评论72阅读模式
英文:

Generate truly random numbers in C#

问题

我是初学者,对Unity和C#都不熟悉。

我正在制作一个Unity(2D)游戏,我希望敌人的生成点始终位于玩家周围,但位置是随机的。问题是所有的生成点都使用相同的位置,而不是不同的位置。

生成随机数的代码:

float xOffset = Random.Range(0, 50);
float yOffset = Random.Range(0, 50);

我尝试过一些方法,比如改变种子和创建新的Random对象(new Random()),但结果都与上面的一样(它们都使用相同的位置)。

英文:

NOTE: I am a beginner and new to Unity and C#.

I am making a game in unity (2d) and I want to make the enemy spawners to always be around the player but in a random position. The problem is that all the spawners all use the same position instead of all using different positions.

Generating random numbers code:

float xOffset = Random.Range(0, 50);
float yOffset = Random.Range(0, 50);

I've tried some things like changing the seed and creating new Random objects (new Random()) but it all had the same result as above (they all used the same position)

答案1

得分: 1

你可能遇到了类型转换错误,Unity 使用的是与你意图不同的 Random.Range() 重载。例如:Random.Range(int, int)

根据 https://docs.unity3d.com/ScriptReference/Random.Range.html

> 该函数有一个 int 重载,其操作略有不同,特别是关于范围最大值的部分。请查看下面的文档。

尝试更改你的代码,并将范围值指定为浮点数

float xOffset = Random.Range(0f, 50f);
float yOffset = Random.Range(0f, 50f);
英文:

You might have a typecast error and Unity is using a different overload of Random.Range() than you intended. eg: Random.Range(int, int)

as per https://docs.unity3d.com/ScriptReference/Random.Range.html

> There is an int overload of this function that operates slightly differently, especially regarding the range maximum. See its docs below.

Try changing your code and specify your range values as floats

float xOffset = Random.Range(0f, 50f);
float yOffset = Random.Range(0f, 50f);

huangapple
  • 本文由 发表于 2023年4月17日 20:09:18
  • 转载请务必保留本文链接:https://go.coder-hub.com/76035015.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定