完成效果

我说一下制作流程,然后再看后面的代码
1、创建一个image,选择我们的转盘背景图,素材找我或者网上都有,不多说了哈;
2、创建一个空物体,位于转盘的正中心,因为我们的转盘指针的旋转中心是根据空物体进行的中心进行旋转的,所以需要把指针作为空物体的子对象,如果想要做的漂亮,可以自己找一个好的素材或者利用PS处理一下;
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(, ); //开始旋转
isPause = false;
}
} void Update()
{
if (!isPause)
{
//转动转盘(-1为顺时针,1为逆时针)
roolPointer.Rotate(new Vector3(, , -)*initSpeed*Time.deltaTime); //让转动的速度缓缓降低
initSpeed -= changeSpeed; //当转动的速度为0时转盘停止转动
if (initSpeed <= )
{
//转动停止
isPause = true;
}
}
}
}

Unity3d实现幸运转盘的更多相关文章

  1. Unity3d学习 预设体(prefab)的一些理解

    之前一直在想如果要在Unity3d上创建很多个具有相同结构的对象,是如何做的,后来查了相关资料发现预设体可以解决这个问题! 预设体的概念: 组件的集合体 , 预制物体可以实例化成游戏对象. 创建预设体 ...

  2. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

  3. TDD在Unity3D游戏项目开发中的实践

    0x00 前言 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音.那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使 ...

  4. warensoft unity3d 更新说明

    warensoft unity3d 组件的Alpha版本已经发布了将近一年,很多网友发送了改进的Email,感谢大家的支持. Warensoft Unity3D组件将继续更新,将改进的功能如下: 1. ...

  5. Unity3D框架插件uFrame实践记录(一)

    1.概览 uFrame是提供给Unity3D开发者使用的一个框架插件,它本身模仿了MVVM这种架构模式(事实上并不包含Model部分,且多出了Controller部分).因为用于Unity3D,所以它 ...

  6. Unity3D 5.3 新版AssetBundle使用方案及策略

    1.概览 Unity3D 5.0版本之后的AssetBundle机制和之前的4.x版本已经发生了很大的变化,一些曾经常用的流程已经不再使用,甚至一些老的API已经被新的API所取代. 因此,本文的主要 ...

  7. 山寨Unity3D?搜狐畅游的免费开源游戏引擎Genesis-3D

    在CSDN上看到了<搜狐畅游发布3D游戏引擎Genesis-3D 基于MIT协议开源>(http://www.csdn.net/article/2013-11-21/2817585-cha ...

  8. 从Unity3D编译器升级聊起Mono

    接前篇Unity 5.3.5p8 C#编译器升级,本文侧重了解一些Mono的知识. Unity3D的编译器升级 新升级的Mono C#编译器(对应Mono 4.4) Unity编辑器及播放器所使用的M ...

  9. Unity3D和Egret3D的基情

    Unity3D依靠多平台发布这个核心特点,目前如日中天,屌丝引擎之王绝无来者.Egret白鹭引擎,也着实在微信上刷了一屏又一屏.这二者似乎风马牛不相及,但是这个无处不搞基的年代,让一切皆有可能. U3 ...

随机推荐

  1. angular学习笔记(二十五)-$http(3)-转换请求和响应格式

    本篇主要讲解$http(config)的config中的tranformRequest项和transformResponse项 1. transformRequest: $http({ transfo ...

  2. ny49 开心的小明

    开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他 ...

  3. vue2.0 Hash模式下实现微信分享

    1,通过后台,获取accessToken 和 签名jsApiTicket,并写入浏览器缓存(可以写在app.vue中) <script type="text/ecmascript-6& ...

  4. 使用SimpleMDE富文本编辑器

    1). 安装 SimpleMDE npm install simplemde --save 2). 使用 SimpleMDE 1.打开 src/views/articles/Create.vue 文件 ...

  5. LeetCode: Populating Next Right Pointers in Each Node 解题报告

    Populating Next Right Pointers in Each Node TotalGiven a binary tree struct TreeLinkNode {      Tree ...

  6. Web攻防系列教程之文件上传攻防解析(转载)

    Web攻防系列教程之文件上传攻防解析: 文件上传是WEB应用很常见的一种功能,本身是一项正常的业务需求,不存在什么问题.但如果在上传时没有对文件进行正确处理,则很可能会发生安全问题.本文将对文件上传的 ...

  7. java Map & List 遍历

    一.Map 遍历 public static void main(String[] args) { Map<String, String> map = new HashMap<Str ...

  8. centos6.5中的cron计划任务配置方法

    1.#crontab -u <-l, -r, -e> -u指定一个用户-l列出某个用户的任务计划-r删除某个用户的任务-e编辑某个用户的任务 2. cron文件语法与写法 可用cronta ...

  9. Unity又称Unity Application Block

    本文关注以下方面(环境为VS2012..Net Framework 4.5以及Unity 3): Ioc/DI简介: Unity简单示例 一.Ioc/DI简介 IoC 即 Inversion of C ...

  10. 【Unity笔记】Behaviour Designer的使用方法

    Tasks列表 -- Composites选项 Sequence:图标是“箭头”,相当于And逻辑.下接多个子任务,它们从左到右依次执行.所有子任务执行成功,则Sequence返回成功:任一子任务执行 ...