Unity 之 实现老虎机滚动抽奖效果
发布日期:2021-06-29 19:10:10
浏览次数:3
分类:技术文章
本文共 2784 字,大约阅读时间需要 9 分钟。
Unity 之 实现老虎机滚动抽奖效果
直接看下效果图吧:
制作思路:
设计四张图片,五个点,每个图片同时向下一个点移动,到最后一个就回到0号点,以此循环。
场景搭建:
- 创建Image命名为Bg作为电视框背景;
- 创建Image命名Mask并添加Mask组件作为电视框内容显示遮罩框;
- 创建四个Image作为滚动图片;
- 创建开始抽奖按钮;
PS:实际项目中可以根据需求来动态修改图片显示,以达到的控制每次抽奖奖品内容。
源码分享:
using System.Collections;using UnityEngine;using UnityEngine.UI;public class ScollToDraw : MonoBehaviour{ // 抽奖按钮 public Button DrowBtn; // 奖励图片 public Image[] ArardImgArr; // 转盘速度 public float AniMoveSpeed = 3f; // 进度 private float[] progress = new[] { 0f, 1f, 2f, 3f, 4f}; // 转动动画位置 private Vector3[] AniPosV3 = new[] { Vector3.up * 240, Vector3.up * 120, Vector3.zero, Vector3.down * 120, Vector3.down * 240}; // 自动暂停标识 private bool isAutoStop; // 抽奖结束 停止刷新界面UI private bool isStopUpdatePos; void Start() { DrowBtn.onClick.AddListener(DrawFun); isAutoStop = false; isStopUpdatePos = false; } void Update() { if (isStopUpdatePos) return; float t = Time.deltaTime * AniMoveSpeed; for (int i = 0; i < ArardImgArr.Length; i++) { progress[i] += t; ArardImgArr[i].transform.localPosition = MovePosition(i); } } // 获取下一个移动到的位置 Vector3 MovePosition(int i) { int index = Mathf.FloorToInt(progress[i]); if (index > AniPosV3.Length - 2) { //保留其小数部分,不能直接赋值为0 progress[i] -= index; index = 0; // 索引为2的到底了,索引为0的就在正中心 if (i == 2 && isAutoStop) { isStopUpdatePos = true; Debug.Log("展示奖励界面..."); // todo...获取奖励数据维护 } return AniPosV3[index]; } else { return Vector3.Lerp(AniPosV3[index], AniPosV3[index + 1], progress[i] - index); } } ////// 点击抽奖 /// void DrawFun() { isAutoStop = false; isStopUpdatePos = false; StartCoroutine(SetMoveSpeed(2)); // DoTween 按钮下拉动画 // Transform tran = DrowBtn.transform; //tran.DOLocalMoveY(-60, 0.2f).OnComplete(() => //{ // tran.DOLocalMoveY(50, 0.2f); // //}); } // 抽奖动画速度控制 IEnumerator SetMoveSpeed(int time) { AniMoveSpeed = 10; yield return new WaitForSeconds(time); AniMoveSpeed = 1; yield return new WaitForSeconds(time); isAutoStop = true; }}
若还有不明白的地方,可以评论咨询,或者点击下面链接查看Demo:
转载地址:https://czhenya.blog.csdn.net/article/details/112385514 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月22日 20时17分30秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JS 数组和对象的遍历⽅式,以及⼏种⽅式的⽐较
2019-04-30
JS 事件的各个阶段
2019-04-30
快速的让⼀个数组乱序
2019-04-30
细说 javascript 的 parseInt()函数
2019-04-30
渲染几万条数据并不卡住界面
2019-04-30
获取到页⾯中所有的checkbox怎么做?
2019-04-30
添加、移除、移动、复制、创建和查找节点
2019-04-30
Javascript中callee和caller的作用
2019-04-30
javascript 数组去重
2019-04-30
JAVA 基本语法
2019-04-30
Java 标识符
2019-04-30
Java 修饰符
2019-04-30
Linux 简介
2019-04-30
Linux 文件权限详解
2019-04-30
Linux 查看文件权限、目录权限(文件夹权限)
2019-04-30
Linux 清屏
2019-04-30
Linux mkdir 创建文件夹
2019-04-30
Linux 查看版本信息
2019-04-30
Linux 新增用户 useradd
2019-04-30
Linux 查看用户列表
2019-04-30