随机范围与统一3d的限制

时间:2013-02-21 11:12:45

标签: object random range unity3d union

我在更新函数

中的c#中声明了vector3的变量
    Vector3 position = new Vector3(Random.Range(x, y), 0, 0);

对于x和y,我需要5-10和20-25的值。

因此值应为5,6,7,8,9,10,20,21,22,23,24,25

通常我曾经给过

    Random.Range(-0F,-2F);

但这里不可能。 我不知道要解决这个问题。

任何联合功能是否统一?

或任何其他方法???

等待温和的想法和适当的回复。

先谢谢。

1 个答案:

答案 0 :(得分:2)

创建数字5, 6, 7, 8, 9, 10, 20, 21, 22, 23, 24, 25

的数组

然后从阵列中随机选择一个数字。

void Awake()
{
   int[] array = {5, 6, 7, 8, 9, 10, 20, 21, 22, 23, 24};

   int randNum = Random.Range(0, array.Length);
}
编辑:我看到你把数字作为一组,但如果你只需要一组x和一组y。然后

Vector3 position = new Vector3(Random.Range(5,11), Random.Range(10, 26), z); 

注意最后一个数字是n + 1,因为Random.Range是独占的。

EDIT2:使用我的课程,它将允许您传递3个范围并随机返回一个数字。

using UnityEngine;
using System.Collections;

public class RandomSetGenerator
{   
    public static int generateFromRange(int range1Start, int range1Stop, int range2Start, int range2Stop, int range3Start, int range3Stop)
    {
        List<Integer> randomList = new List<Integer>();

        randomList = addToRandomList(randomList, range1Start, range1Stop);
        randomList = addToRandomList(randomList, range2Start, range2Stop);
        randomList = addToRandomList(randomList, range3Start, range3Stop);

        return randomList[Random.Range(0, randomList.Count)];
    }

    private static List<Integer> addToRandomList(List<Integer> randomList, int startRange, int endRange)
    {
        for(int i = startRange; i <= endRange; i++)
            randomList.Add(i);

        return randomList;
    }   
}