91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity怎么實現老虎機滾動抽獎效果

發布時間:2021-04-26 10:14:32 來源:億速云 閱讀:757 作者:小新 欄目:開發技術

小編給大家分享一下Unity怎么實現老虎機滾動抽獎效果,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

直接看下效果圖吧:

Unity怎么實現老虎機滾動抽獎效果

制作思路:

設計四張圖片,五個點,每個圖片同時向下一個點移動,到最后一個就回到0號點,以此循環。

Unity怎么實現老虎機滾動抽獎效果

場景搭建:

  • 創建Image命名為Bg作為電視框背景;

  • 創建Image命名Mask并添加Mask組件作為電視框內容顯示遮罩框;

  • 創建四個Image作為滾動圖片;

  • 創建開始抽獎按鈕;

Unity怎么實現老虎機滾動抽獎效果

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);
            }
      }
      
      /// <summary>
      /// 點擊抽獎
      /// </summary>
      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;
      }
}

以上是“Unity怎么實現老虎機滾動抽獎效果”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

磐安县| 沙田区| 偃师市| 甘德县| 泰和县| 清水河县| 东方市| 霍邱县| 清流县| 绩溪县| 重庆市| 吕梁市| 吐鲁番市| 乌兰县| 冕宁县| 云霄县| 石景山区| 工布江达县| 敖汉旗| 刚察县| 宿迁市| 改则县| 同江市| 祥云县| 望城县| 浦城县| 禄丰县| 澳门| 大化| 方山县| 涞水县| 濉溪县| 凤台县| 木兰县| 台南县| 慈溪市| 和田县| 广汉市| 弥渡县| 惠安县| 汾西县|