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,我们创建的材质球)如果有需要的,可以找我喔。

相关文章
|
5月前
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版3(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版3(附带项目源码)
126 2
|
5月前
|
图形学
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(上)
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)
195 2
|
5月前
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版2(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版2(附带项目源码)
54 1
|
5月前
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版6(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版6(附带项目源码)
61 1
|
5月前
|
存储 JSON 关系型数据库
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版13(完结,附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版13(完结,附带项目源码)
101 0
|
5月前
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版12(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版12(附带项目源码)
57 0
|
5月前
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版8(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版8(附带项目源码)
33 0
|
5月前
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版5(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版5(附带项目源码)
41 0
|
5月前
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版1(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版1(附带项目源码)
127 0
|
5月前
|
图形学 容器
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版9(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版9(附带项目源码)
41 0