英文:
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);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论