使用Dotween实现一个转盘游戏
前言
转盘类的游戏中奖区域一般来说都是服务器可以进行控制的,除了完全随机性质的那种,这里实现是随机中奖结果的那种,转盘共有16个格子,点击开始按钮进行转动。
一、主界面布局
简单的搭建一个界面,详细参考下图
实现效果
二、主要代码
1.主代码
代码如下(示例):
只需要将代码添加到Wheel上拖拽一个按钮就可以了
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class zhuanpang_ctr : MonoBehaviour
{
Sequence Wheelsequence;
public Button StartBtn;
private void Start()
{
StartBtn.onClick.AddListener(ClickStartGame);
}
public void ClickStartGame()
{
StartBtn.interactable = false;
print("开始转动");
ClearTween();
int loops = Random.Range(4, 6);
print("旋转的圈数:"+loops);
int dwTLatticeID = Random.Range(1, 16);
print("中奖的区域:" + dwTLatticeID);
float itemAngle = 360f / 16;
print("每一份的旋转角度:" + itemAngle);
float degree = loops * 360f + 360f - (dwTLatticeID - 1) * itemAngle + transform.localEulerAngles.z;
print("目标旋转角度:" + degree);
Wheelsequence = DOTween.Sequence()
.Append(transform.DORotate(new Vector3(0f, 0f, -degree), 4f, RotateMode.WorldAxisAdd))
.SetEase(Ease.InOutCubic)
.OnUpdate(OnWheelUpdate)
.OnComplete(OnWheelFinished)
.SetAutoKill(true)
.Play();
}
private void ClearTween()
{
// Clear the existing tween
if (Wheelsequence != null)
{
Wheelsequence.Kill();
Wheelsequence = null;
}
}
private void OnWheelUpdate()
{
// Handle wheel update logic here
print("转盘正在转动");
}
private void OnWheelFinished()
{
// Handle wheel finished logic here
print("转盘旋转完毕");
StartBtn.interactable = true;
}
}
总结
这是一个简单的转盘游戏,代码上面也很简单,主要就是要熟悉使用dotween这个插件就可以。