因为社团里活动需要,所以用unity简单做了一个小抽奖程序,因为想玩sp所以贴了一堆乱七八糟的材质准备搞个废土风不过好像有点违和)。
抽奖的核心在于Unity中动画的设计,在前半段固定好的指针转速缓速变慢之后,最后也就是最慢的一圈会变成匀速旋转,这一圈内将由随机函数指定停止时间,借此便实现了转盘的效果。
核心代码(确实就这么点):
void Update()
{
if (Input.GetKeyDown(KeyCode.Return) && !anim.GetBool("isRoll") && music.isPlaying)
//当动画没有在进行且设置好的音乐正常播放时按下回车将开始随机
{
anim.SetBool("isRoll", true);
music.Pause();
roll.Play();//更换为转盘时的bgm
float s = Random.Range(12f, 19f);
Invoke("Stop", s);//将在计算好的时间段内随机停下指针的动画
}
}
void Stop()
{
over.Play();
roll.Stop();
anim.speed = 0f;
Invoke("Open", 7);
}
由于本次抽奖形式为加权抽奖,因此为转盘的不同结果设计了不同的大小(即抽中概率),此外为了适应多种情况,程序内准备了多种转盘预设,可在程序内按键切换:
分别是8、7、6、5、4位抽奖者的情况(当然需要提前得出排名来加权)
<