在不同时间和两个随机点繁殖对象
本文关键字:随机 两个 繁殖 对象 同时间 | 更新日期: 2023-09-27 18:00:18
我正试图创建一个spawner,但在实际生成对象之前,我已经编码好了机制,因为我认为这将是更容易的部分。到目前为止,我已经创建了运行良好的代码,但生成点严重偏向于两个比率中的一个,比如30:1或更高。虚假是严重扭曲的产卵。
timeLeftUntilSpawn = Time.time - startTime;
System.Random secondsBetweenSpawn = new System.Random ();
float num2 = secondsBetweenSpawn.Next (1, 10); // random number between 1 and 10 'seconds'
if (timeLeftUntilSpawn >= num2) {
startTime = Time.time;
timeLeftUntilSpawn = 0;
Debug.Log ("Spawn one here");
System.Random rnd = new System.Random (); // from here is deciding on the position of the spawn after one has been spawned
int num = rnd.Next (0, 10); //random number between 0 and 10
if (num < 5) {
switchSpawning = false;
Debug.Log ("False");
transform.position = spawnPosition;
} else if (num > 5) {
switchSpawning = true;
Debug.Log ("True");
transform.position = spawnPosition2;
}
}
首先,你的随机数是一个整数……所以你只有10个可能的数字,它可以是..0到10作为整数。然后你检查它是小于5还是大于5…如果数字确实是,你没有条件。。。5.
这是十分之一的机会,两种选择都不会命中。
这就是在这种情况下不应该使用else if
,而应该单独使用else
的原因。
此外,不需要搜索0到10之间的数字,您最多可以搜索1…试试这个:
System.Random rnd = new System.Random (); // from here is deciding on the position of the spawn after one has been spawned
float num = rnd.Range (0, 1); //random number between 0 and 1
if (num < .5f) {
switchSpawning = false;
Debug.Log ("False");
transform.position = spawnPosition;
} else {
switchSpawning = true;
Debug.Log ("True");
transform.position = spawnPosition2;
}