答案 0 :(得分:2)
我愿意:
int actions = Random.Range(0,2);
(最后一个数字没有出现,请注意这里的可能性是给出两个可能的随机结果:“0或1”。 - 如果你想要“0,1或2”放Random.Range(0,3);
等等)
并使用switch statement查看它 - 它会触发按int actions
排序的确切操作:)
switch(actions){
case 0:
//do thing1
break;
case 1:
//do thing 2
break;
default:
//do nothing
break;
}
答案 1 :(得分:1)
通用方法是存储函数数组,并使用随机值索引数组以选择要执行的函数。
这样的事情:
Random rand = new Random();
Action[] actions = {
() => { x += 1; y += 1; },
() => { x += 1; }
//...
};
actions[rand.Next(actions.Length)]();
然而,这可能相当繁琐,但有一些优点。例如,可能的操作集可以动态更改。
在这种情况下,如果你只关心从静态集中选择一个随机向量,你真的只需要选择一个随机deltaY和deltaX,其中dX和dY是{-1,0,1}
Random rand = new Random();
int dY = rand.Next(-1, 2);
int dX = rand.Next(-1, 2);
x += dx;
y += dy;
答案 2 :(得分:1)
Random rand = new Random();
int direction;
Vector3[] Directions = { // front, back, left, right and diagonal positions
new Vector3( 1 , 0 , 0 ),
new Vector3( -1 , 0 , 0 ),
new Vector3( 0 , 1 , 0 ),
new Vector3( 0 , -1 , 0 ),
new Vector3( 1 , 1 , 0 ),
new Vector3( -1 , -1 , 0 ),
new Vector3( 1 , -1 , 0 ),
new Vector3( -1 , 1 , 0 )
}
public Vector3 ChooseRandome(){
direction = rand.Next( Directions.length ); // Random number with directions.length as max possible number
return Directions[randomIndex]; // plug random number in and return index.
}
答案 3 :(得分:0)
您要做的是创建一个随机数生成器,生成1到8的随机数,每个数字代表一个方向。它是这样的:
name
如果我将一种语言与c#混淆,我感到非常抱歉,因为我暂时没有团结一致:)