Unity的转盘代码
来源:互联网 发布:大学数据新闻比赛 编辑:程序博客网 时间:2024/05/22 11:06
上章的计时器大家看了可能感觉有点混乱,不知道怎么使用,这章用一个转盘实例来运用上一章的计时器,转盘一般要求:1:先快速的转个几圈 2.当转到最后一圈的时候转的速度会越来越慢,直至停下 3.根据提供的数据转到相对应的奖品上 以上这3个要求是转盘的基本要求,代码如下:
public delegate void IsBack();
public class ChouJiang : MonoBehaviour {
/// <summary>
/// 计时器
/// </summary>
Timer m_Timer;
/// <summary>
/// 跑马灯的框子
/// </summary>
public Transform m_frame;
/// <summary>
/// 子物体的下标
/// </summary>
int degree = 0;
/// <summary>
/// 开始抽奖的按钮
/// </summary>
Button m_button;
/// <summary>
/// 抽到的奖品
/// </summary>
int index;
/// <summary>
/// 返回的按钮
/// </summary>
Button back_button;
void Awake () {
m_Timer = Timer.createTimer("TimeCtroller");
m_button = GameObject.Find("StarChouJiang").GetComponent<Button>();
back_button = GameObject.Find ("ChouJiangBack").GetComponent<Button> ();
}
void Start()
{
m_button.onClick.RemoveAllListeners();
m_button.onClick.AddListener(() => { Restar(); });
}
/// <summary>
/// 当点击开始按钮时,执行跑马
/// </summary>
void Restar() {
if (isagree())
{
m_button.interactable = false;
back_button.interactable = false;
index= Awards();
QuickRun();
print (index);
}
}
/// <summary>
/// 是否达到可以进行抽奖的条件
/// </summary>
/// <returns></returns>
bool isagree() {
return true;
}
/// <summary>
/// 通过改变框子的父物体来造成位置来模拟跑马灯的效果
/// </summary>
void RunHorse()
{
degree = m_Timer.count % transform.childCount;
m_frame.SetParent(transform.GetChild(degree));
m_frame.position = transform.GetChild(degree).position;
}
/// <summary>
/// 先跑三圈
/// </summary>
/// <returns></returns>
void QuickRun() {
//m_index = degree;
int count = transform.childCount * 3;
m_Timer.isStart(0.05f, RunHorse, true, count,false);
m_Timer.EventsOver(SlowRun);
}
/// <summary>
/// 最后一圈
/// </summary>
/// <returns></returns>
void SlowRun() {
m_Timer.isStart(TimerLerp(2), RunHorse, true, index,true,isEnd);
}
/// <summary>
/// 求出最后一圈目标之间的差值
/// </summary>
/// <param name="index"></param>
/// <param name="Timer2"></param>
float[] TimerLerp(float Timer2)
{
float[] arry = new float[index];
float a = Timer2;
for (int i = arry.Length-1; i >=0; i--)
{
a = Mathf.Lerp(0, a, 0.5f);
arry[i] = a;
}
return arry;
}
public void isEnd()
{
m_Timer.isTimers = false;
Invoke("TOToAddwupin", 1f);
}
void TOToAddwupin() {
SceneMgr.Instance.MainSceneToAddwupin();
}
////////////////////////////////////////////////////////////
int Awards() {
int a = Random.Range (0, 1000);
print (a);
if (a < 1) { //0.1%的概率
return (int)(Fudou.Fudou0);
}
if (a < 11) { //1%的概率
return (int)(Fudou.Fudou1);
}
if (a < 111) {//10%的概率
return (int)(Fudou.Fudou2);
}
if (a < 311) {//20%的概率
return (int)(Fudou.Fudou3);
}
if (a < 511) {//20%的概率
return (int)(Fudou.Fudou4);
}
if (a < 811) {//20%的概率
return (int)(Fudou.Fudou5);
}
if (a < 911) {//10%的概率
return (int)(Fudou.Fudou6);
}
if (a < 921) {//1%的概率
return (int)(Fudou.Fudou7);
}
if (a < 931) {//1%的概率
return (int)(Fudou.Fudou8);
} else {//1%的概率
return (int)(Fudou.Fudou9);
}
}
}
最后:大家可以直接将代码复制然后将相对应的Button改下就在Unity实现抽奖跑马灯的效果啦,如果有不懂的地方欢迎下面评论留言.
- Unity的转盘代码
- Unity 转盘的实现
- android 代码绘制转盘抽奖的实现
- unity 转盘抽奖
- Unity 实现大转盘笔记
- Unity实现幸运大转盘
- Android抽奖转盘代码
- flex 幸运大转盘 代码
- 大转盘抽奖代码 jquery
- 《幸运大转盘》代码分享
- 转盘抽奖Java后端代码
- 麻烦的转盘
- android的转盘
- 转盘
- 转盘
- 转盘
- Js实现简易大转盘抽奖代码
- js转盘抽奖部分代码原理
- Unity3D之组合按键
- 简单的Logger
- 关于字符编码,你所需要知道的(ASCII,Unicode,Utf-8,GB2312…)
- linux 命令less
- python核心编程第二版第一章学习笔记
- Unity的转盘代码
- 127.0.0.1和0.0.0.0地址的区别
- 定时器Timer以及TimerTask
- C# 类型转换 (TryParse)
- 域名跳转
- Spring配置多数据源在配置事物后无效完美解决方案
- linux压缩和解压缩命令大全
- Texlive + TexStudio 写 latex 很是方便
- android 封装Log