唤境引擎
抽奖转盘:是通过转盘背景和转盘上的奖品绑定,实现同时旋转的效果。转盘的旋转:是通过设置一个目标角度,然后利用函数 lerp() 将转盘自身角度不断逼近目标角度,这样会有转盘逐渐减慢的视觉效果。中奖的判定:是通过一个位于转盘上方的隐藏的小图,选中离它近的奖品为中奖奖品。这样可以避免,指针区域过大,无法准确判断奖品。现在从这三个方面制作抽奖系统~
抽奖转盘 首先把素材都导入:转盘和奖品
舞台上调整好大小和位置
然后把所有奖品放到一个同类组里,这样就可以对所有奖品统一操作,不用一个一个奖品设置能力和事件。
给奖品同类组添加绑定能力,注意是不移动的对象身上添加绑定能力,这样绑定在移动对象身上就可以跟着动啦
添加事件,场景开始时,将奖品猫和转盘背景绑定。
动作是奖品同类组的与对象绑定
整条事件
转盘的旋转 点击按钮,转盘旋转,舞台上放好按钮。
然后添加数字类型的变量作为目标角度
再添加两个变量,一个事当前角度,一个是抽奖阶段,判断当前转盘处于什么阶段,是该旋转还是该停止。
添加事件,点击按钮,设置目标角度,并把抽奖阶段改为1。
系统的设置值动作,目标角度用个随机的角度。
表达式random(0,360)+720 会得到一个720-1080之间的随机数。也就是转盘会转两-三圈。
添加动作,系统设置值,抽奖阶段为1
当抽奖阶段为1的时候,让转盘开始旋转, 条件是系统的比较变量
添加动作,按钮禁用
再添加动作,设置变量当前角度不断靠近目标角度,表达式为 lerp(当前角度,目标角度,dt)
然后将转盘角度设为当前角度
因为表达式 lerp() 不会让转盘角度完全等于目标角度,所以要判断当角度非常接近的时候,把转盘角度设为目标角度。添加子事件
子事件的条件是转盘角度在角度内
动作是转盘的设置角度
把当前角度设为0 ,抽奖阶段改回0 ,这样就不会继续旋转了。
转盘旋转的全部事件
预览
把指针图导入
舞台上摆好,可以看出指针是比较大的,所以它指定的区域如果是在交界处,比较难判定中奖奖品是哪个。
所以再添加一个精灵
调小它的尺寸,不透明度设为0,
舞台上摆放好,让它位于指针的正上方。
然后添加个文本,当中奖的时候,文本显示恭喜中奖。
可以修改一下文本颜色和字号
舞台上摆好位置,把他摆在场景外,当中奖时,让文本移动进来。
现在开始写事件,判定中奖。转盘停止旋转的时候,也就是他的角度为目标角度的时候。
添加子事件
选出离透明精灵最近的猫咪,作为中奖的奖品条件是奖品同类组的选中最近/远实例
坐标就是那个用来判定中奖的透明精灵坐标
动作就是中奖后的表现效果,这里我们希望是从上方滑下来一行“恭喜中奖”的文字。所以动作先设置文本为“恭喜中奖”
然后用文本的移动到位置
坐标和速度根据自己的需求设置数值。
文字不可能一直显示,所以可以等待1-2秒后,把文本位置设回到场景外 系统的等待动作
文本的设置位置
把按钮改回启用状态。现在就完成了中奖的全部制作,整体事件如下
效果预览