Unity3d实现幸运转盘

简介: 完成效果我说一下制作流程,然后再看后面的代码1、创建一个image,选择我们的转盘背景图,素材找我或者网上都有,不多说了哈;2、创建一个空物体,位于转盘的正中心,因为我们的转盘指针的旋转中心是根据空物体进行的中心进行旋转的,所以需要把...
img_994cb4fb0281438418ccf8f892c89d44.png
完成效果

我说一下制作流程,然后再看后面的代码
1、创建一个image,选择我们的转盘背景图,素材找我或者网上都有,不多说了哈;
2、创建一个空物体,位于转盘的正中心,因为我们的转盘指针的旋转中心是根据空物体进行的中心进行旋转的,所以需要把指针作为空物体的子对象,如果想要做的漂亮,可以自己找一个好的素材或者利用PS处理一下,我的指针就是下载的素材利用PS做了个PNG格式;
3、然后创建一个Button,名字修改一下;
4、然后在转盘指针的父物体也就是空物体上面创建脚本,内容如下:

using UnityEngine;
using UnityEngine.UI;

/// <summary>
/// 脚本位于指针的父对象,空物体
/// </summary>
public class TheLuckyRoller
 : MonoBehaviour
{
    /// <summary>
    /// 幸运转盘指针父对象的Transform
    /// </summary>
    private Transform roolPointer;

    /// <summary>
    /// 初始旋转速度
    /// </summary>
    private float initSpeed;

    /// <summary>
    /// 速度变化值
    /// </summary>
    private float changeSpeed = 0.5f;

    /// <summary>
    /// 转盘是否暂停
    /// </summary>
    private bool isPause = true;

    /// <summary>
    /// button事件,控制指针
    /// </summary>
    private Button button;

    void Awake()
    {
        //获取幸运转盘指针父对象的Transform
        roolPointer = GetComponent<Transform>();

        //获取button按钮
        button = transform.parent.Find("Button").GetComponent<Button>();
    }

    /// <summary>
    /// 开始抽奖,注册OnClick事件
    /// </summary>
    void OnEnable()
    {
        //清空button注册事件
        button.onClick.RemoveAllListeners();
        //注册OnClick事件
        button.onClick.AddListener(OnButtonClick);
    }

    /// <summary>
    /// 点击事件
    /// </summary>
    public void OnButtonClick()
    {
        if (isPause)
        {
            //随机生成一个初始速度
            initSpeed = Random.Range(100, 500);

            //开始旋转
            isPause = false;
        }
    }

    void Update()
    {
        if (!isPause)
        {
            //转动转盘(-1为顺时针,1为逆时针)
            roolPointer.Rotate(new Vector3(0, 0, -1)*initSpeed*Time.deltaTime);

            //让转动的速度缓缓降低
            initSpeed -= changeSpeed;

            //当转动的速度为0时转盘停止转动
            if (initSpeed <= 0)
            {
                //转动停止
                isPause = true;
            }
        }
    }
}
img_1dd00bd9433c31a3815a52a786f9fb7d.png
游戏对象

img_2e8d06cb8c2fbc3d836b977974cee385.png
需要的素材,如果有需要素材的可以加我QQ,上面有的喔

我们在这个转盘里面用到了一个mask遮罩,然后做一个材质球。当然了,如果你用unity自带的mask遮罩也可以,不过边缘区域会有一些模糊,所以我用了一个mask遮罩的shader,(使用了shader后,转盘Image就不能选择Source image了,而是下面的Mateial,我们创建的材质球)如果有需要的,可以找我喔。

相关文章
|
4月前
|
图形学
如何在微信小游戏制作工具中做出好看的粒子效果?
如何在微信小游戏制作工具中做出好看的粒子效果?
43 1
|
4月前
|
算法 图形学
Unity小游戏——武士击杀小怪兽(无限滚动的背景)
Unity小游戏——武士击杀小怪兽(无限滚动的背景)
|
4月前
|
图形学
Unity小游戏——迷你拼图
Unity小游戏——迷你拼图
100 1
|
4月前
|
机器学习/深度学习 算法 图形学
Unity小游戏——无限滚动的背景的改良
Unity小游戏——无限滚动的背景的改良
|
4月前
|
图形学
Unity小游戏——怪物出现模式的管理
Unity小游戏——怪物出现模式的管理
|
10月前
|
API 图形学 C++
【Unity趣味编程】——c++实现小球的自由移动
【Unity趣味编程】——c++实现小球的自由移动
114 0
|
C# 图形学
边学边做的第一个Unity小游戏
学Unity开发,肯定先要了解小Unity这个开发工具长什么样。 第一次看到Unity界面的时候,我第一反应是,我靠,这不是犀牛么。学工业设计的人应该接触过犀牛这款3D建模软件,主界面也是一个3D透视界面。
1496 0