Unity3d实现幸运转盘

作者: 好怕怕 | 来源:发表于2016-06-03 18:48 被阅读2686次
完成效果

我说一下制作流程,然后再看后面的代码
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;
            }
        }
    }
}
游戏对象
需要的素材,如果有需要素材的可以加我QQ,上面有的喔

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

相关文章

  • Unity3d实现幸运转盘

    我说一下制作流程,然后再看后面的代码1、创建一个image,选择我们的转盘背景图,素材找我或者网上都有,不多说了哈...

  • Android实现幸运大转盘功能

    参考: 功能概述: 旋转之后根据随机数来影响最后指针停留的位置,也就是旋转的角度。有两种转法,指针转和转盘转,这里...

  • 幸运转盘

    开发思路: 层级如下图 结果根据动的图层旋转角度去计算

  • 幸运转盘

    自从加入了简书,每天都要玩几把幸运转盘,来获取一些加成卡。 但最近一段的幸运转盘,我不敢再去玩,这到底为什么呢? ...

  • 博彩类玩法

    一、调查 以下是pick语音的玩法 抽奖分成三种类型,普通转盘、黄金转盘和幸运转盘。 普通转盘+黄金转盘次数=20...

  • 中奖后正能量满满的

    今天微雨,躺在床上转动幸运转盘,又一次幸运地中奖了! 每到这时,我喜欢分享自己喜欢的句子: 1.如何实现梦想?不需...

  • 幸运大转盘

    时间:7月19日 学员:黄诗淇 任课教师:张老师 课程目标:1.了解齿轮传动 2.加速:大带小,减速:小带大 3....

  • 幸运大转盘

    学员:唐逸夫、孙铭涵、从宁菲 时间:6月10日 任课教师:张老师 课程目标::1.了解齿轮传动,大齿轮带动小齿轮做...

  • 幸运大转盘

    时间:12月24日 学员:王博浩洋 任课教师:张老师 课程目标:1.了解齿轮传动,大齿轮带动小齿轮做加速运动,小齿...

  • 幸运转盘效果

网友评论

    本文标题:Unity3d实现幸运转盘

    本文链接:https://www.haomeiwen.com/subject/mwcldttx.html