Unity中random函数的简单使用
2017-03-07 22:36
183 查看
一:如果想要从一个数组中随机的取出一个数据,此时可以用Random函数,如:
注意这里取值的范围是0~Length-1
二:在不同概率下发生事件的场景:
一般将事件发生概率储存在一个数组中,比如float[]{0.5,0.25,0.2,0.05},此时随机生成一个介于0~1之间的数,与上述的值进行比较,很明显,这个随机数的值在0-0.5这个区间的概率最大。
Random.value :返回一个0~1之间的数。
三:利用曲线
定义一个公有的AnimationCurve ,就可以对它进行编辑。
curve.Evaluate(Random.value)参数是随机出的一个值,可以认为是图中的横坐标,函数会返回它所对应的竖坐标的值,其中曲线越陡峭的地方代表发生的概率越大,越平坦的地方代表发生的概率越小。由于返回的是float类型,如果想要整形,Mathf.RoundToInt().
四:洗牌类任务
var element = myArray[Random.Range(0, myArray.Length)];
注意这里取值的范围是0~Length-1
二:在不同概率下发生事件的场景:
一般将事件发生概率储存在一个数组中,比如float[]{0.5,0.25,0.2,0.05},此时随机生成一个介于0~1之间的数,与上述的值进行比较,很明显,这个随机数的值在0-0.5这个区间的概率最大。
float Choose (float[] probs) { float total = 0; foreach (float elem in probs) { total += elem; } float randomPoint = Random.value * total; for (int i= 0; i < probs.Length; i++) { if (randomPoint < probs[i]) { return i; } else { randomPoint -= probs[i]; } } return probs.Length - 1; }
Random.value :返回一个0~1之间的数。
三:利用曲线
public AnimationCurve curve; float CurveWeightedRandom(AnimationCurve curve) { return curve.Evaluate(Random.value); }
定义一个公有的AnimationCurve ,就可以对它进行编辑。
curve.Evaluate(Random.value)参数是随机出的一个值,可以认为是图中的横坐标,函数会返回它所对应的竖坐标的值,其中曲线越陡峭的地方代表发生的概率越大,越平坦的地方代表发生的概率越小。由于返回的是float类型,如果想要整形,Mathf.RoundToInt().
四:洗牌类任务
void Shuffle (int[] deck) { for (int i = 0; i < deck.Length; i++) { int temp = deck[i]; int randomIndex = Random.Range(0, deck.Length); deck[i] = deck[randomIndex]; deck[randomIndex] = temp; } }
相关文章推荐
- 使用EnterpriseLibrary的PIAB与Unity搭建简单AOP框架
- unity---EZGUI简单的使用1
- [Unity框架]PureMVC在unity中的简单使用
- Unity中简单使用Opengl
- Unity中简单使用Opengl
- Unity自带的SimpleJSon的简单使用
- Unity 学习笔记(1) -- Unity简介及简单使用
- 在 unity 中使用三种简单的方式实现实时时钟动画
- Metaio在Unity中的简单使用
- 使用PS为Unity游戏创建简单的游戏素材实例
- unity---EZGUI简单的使用1
- Unity4.3新功能:2D工具 的简单使用教程
- 用Unity开发OculusRift体验演示教程(一)——搭建简单场景并使用Oculus提供的SDK包
- Unity 3D使用GameObject创建一个简单的可移动物体
- unity关于StartCoroutine的简单线程使用
- 使用Unity2.0的Interceptor实现简单AOP
- Unity4.3 2D工具 的简单使用教程
- Unity4.3新功能:2D工具 的简单使用教程
- 初学Unity(无法响应的简单原因以及队列的使用)
- Unity 对象池简单使用