在不同时间和两个随机点繁殖对象

本文关键字:随机 两个 繁殖 对象 同时间 | 更新日期: 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;
    }