我试图使此vector2具有第一个值等于-7或7。第二个值为-5、5或之间的任何内容。我似乎无法弄清楚如何使第一个值为-7或7,而两者之间没有任何内容。请帮助
rb2d.velocity = new Vector2(Random(-7,7) , Random.Range(-5,5));
您可以使用 Next
像这样随机生成-1或1:
Random r = new Random();
int randomSign = r.Next(2) * 2 - 1;
为了使它成为7或-7,您只需乘以7:
rb2d.velocity = new Vector2(randomSign * 7 , Random.Range(-5,5));
因为这似乎是统一的,这是如何使用Unity Random.Range
方法进行操作:
int randomSign = Random.Range(0, 1) * 2 - 1;
应该是这样的:
int[] numbers = new int[] { -7, 7 };
var random = new Random();
vrb2d.velocity = new Vector2(numbers [random.Next(2)] , Random.Range(-5,5));
将所有数字放在向量中,然后随机选择索引。足够容易。
这是对您的问题的解决方案:
Random random = new Random();
// Get a value between -5 and 5.
// Random.Next()'s first argument is the inclusive minimum value,
// second argument is the EXCLUSIVE maximum value of the desired range.
int y = random.Next(-5, 6);
// Get value of either 7 or -7
int[] array = new int[] { 7, -7 };
int x = array[random.Next(array.Length)]; // Returns either the 0th or the 1st value of the array.
rb2d.velocity = new Vector2(x, y);
重要的是要知道 random.next(-5,6); 返回-5和5 之间的值。不是-5和6,看来是乍一看。(检查函数的描述。)