使用Unity3D制作一个转盘游戏

今天我们来做点和游戏无关的事情吧!因为博主在找工作的过程中遇到些挫折,所以难免会有些失落,因此实在心情和精力再去完成新的游戏案例,希望大家能够谅解啊。博主今天想和大家分享的是一个叫做幸运转盘的案例。我们知道平时在节假日商场为了促销商品,通常都会推出诸如转盘抽奖这样的游戏。在学了概率以后,虽然我们都知道中奖是一个小概率事件,可是人们对买彩票中奖这样的事情仍然乐此不疲。就像腾讯通过今年的春晚成功地为微信支付培养了大量忠实用户一样,虽然大家抢红包抢到的钱都不算多,可是大家都还是愿意去抢红包啊。为什么呢?呵呵,不就图一乐嘛。好了,那么下面我们一起乐一乐吧,因为激动人心的抽奖环节就要开始了!

首先我们来看看在Unity3D中如何实现转盘抽奖:

从这张图片我们可以看出,转盘抽奖有两部分组成:转盘是可以旋转的、转盘指针是固定不动的。那么,好了,抽奖无非就是让转盘转起来然后再停下来嘛,直接给出代码:

using UnityEngine;
using System.Collections;

public class LuckyRoll : MonoBehaviour {

    //幸运转盘
    private Transform mRoolPanel;

    //初始旋转速度
    private float mInitSpeed;
    //速度变化值
    private float mDelta=0.5f;

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

    void Start ()
    {
        //获取转盘
        mRoolPanel=this.transform.FindChild("Background");
    }

    //开始抽奖
    public void OnClick()
    {
        if(isPause)
        {
            //随机生成一个初始速度
            mInitSpeed=Random.Range(100,500);
            //开始旋转
            isPause=false;
        }
    }

    void Update()
    {
        if(!isPause)
        {

            //转动转盘(-1为顺时针,1为逆时针)
            mRoolPanel.Rotate(new Vector3(0,0,-1) * mInitSpeed * Time.deltaTime);
            //让转动的速度缓缓降低
            mInitSpeed-=mDelta;
            //当转动的速度为0时转盘停止转动
            if(mInitSpeed<=0)
            {
                //转动停止
                isPause=true;
            }
        }
    }
}

这里我们随机给出一个速度mInitSpeed,然后让它按照mDelta的速率缓慢的减少,当mInitSpeed的数值为0时表示转盘停止转动。好了,我们来看看最后的效果:

从现在的效果来看,这个案例基本上成功了,所以以后如果碰到需要这种抽奖活动的场合,大家就可以跟美术协调好,快速地制作出这样一个幸运转盘来向身边的人们炫耀了。不过这个案例同样存在问题:

* 基于随机数的转盘转动不受玩家控制,玩家无法参与到互动当中,可以考虑触摸操作,这样可以根据玩家的操作来模拟转动,提高游戏的真实性和可玩性。

* 因为抽奖的结果是由美术设计在转盘上的,所以程序无法根据转盘停止后指针的位置直接判断出玩家抽奖的结果以及本次抽奖是否为有效的抽奖(指针恰好停留在两个扇形区域的分界线上)。

* 因为这里转盘的旋转并没有严格地按照实际情况下转盘的受力情况来设计,因此可以说这个游戏中的概率分布可能不是均匀的,因此计算机里使用的随机数是伪随机数。

好了,暂时就发现这些问题,如果有朋友知道如何模拟触屏操作和阻尼运动,可以在这篇文章后面给我留言,今天的内容就是这样了,希望大家会喜欢!

时间: 2024-12-30 01:24:07

使用Unity3D制作一个转盘游戏的相关文章

Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

提要 此篇是一个国外教程的翻译,虽然有点老,但是适合新手入门.自己去写代码,debug,布置场景,可以收获到很多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一篇中,我们学会了怎么在Unity中搭建游戏的场景,并且设置模型的物理属性. 在第二篇中,我们学会了怎么在unity中使用脚本,并且创建了大部分的游戏逻辑,包括投球和得分! 在这最后一节中,我们将会为用户创建一个菜单系统,并且和GameController进行交互,我们开始吧. 在设备上测试 到目前为止,

用Phaser来制作一个html5游戏——flappy bird (一)

Phaser是一个简单易用且功能强大的html5游戏框架,利用它可以很轻松的开发出一个html5游戏.在这篇文章中我就教大家如何用Phaser来制作一个前段时间很火爆的游戏:Flappy Bird,希望大家看后也能做出自己的html5游戏.大家可以先点击这里来试玩一下我已经做好的这个游戏,感受一下Phaser的游戏效果,游戏的完整代码我已经放到github上了.支持的浏览器:IE9+.Firefox.Chrome.Opera.Safari以及移动端的能支持html5的浏览器,推荐使用谷歌浏览器,

凡科互动,3分钟就能制作一个H5游戏

H5游戏是现在很多企业和商家都喜欢的一个活动宣传推广手段,听着好像很高大上,其实它的制作非常"白痴",3分钟就能完成,重点是还可以免费使用,这样的好东西怎么能不和大家分享呢? 首先注册并登陆凡科账号,找到"游戏营销"并点击进入. 然后我们就可以看到有很多种游戏展示在我们面前,把鼠标放在某个游戏的页面,就可以看到游戏的动画效果,这个功能是新加进去的,非常实用,这样可节省我们选择游戏的时间. 点击创建后,依次对"基础设置"."奖项设置&qu

笔记:利用 Cocos2dx 3.2 与 Box2D制作一个跑酷游戏

最近写lua写得没有力气了,所以想让脑袋放松一下,刚好看到有人在用swift做游戏: Swift游戏实战-跑酷熊猫 于是脑子一短路,就想到了利用这些素材来做一个游戏. 本来不想记笔记的,但是由于选择物理引擎的时候遇到诸多问题,所以选择记录下来,目前只做了个雏形,需要再完善一点. 需要知识: 1 cocos2dx-3.2 基本知识 2 box2d有一定的了解. 由于比较简单,所以把所有代码给上了先,然后再简单介绍下遇到的问题之类的东西. 首先是主角,熊猫类: Panda.h 1 #ifndef _

【原创】使用JS封装的一个小型游戏引擎及源码分享

1 /** 2 * @description: 引擎的设计与实现 3 * @user: xiugang 4 * @time: 2018/10/01 5 */ 6 7 /* 8 * V1.0: 引擎实现的基本模块思路 9 * 1.创建一个游戏引擎对象及精灵对象 10 * 2.将精灵对象添加到引擎中去,并实现播放动画效果以及需要用到的回调方法 11 * 3.启动引擎 12 * */ 13 14 /* 15 * V2.0: 实现游戏循环模块 16 * 1.如果游戏暂停了,就跳过以下各步骤,并在100毫

【Unity3D实战】零基础一步一步教你制作跑酷类游戏(填坑完整版)

在两个月前曾写了一篇<[Unity3D实战]零基础一步一步教你制作跑酷类游戏(1)>,里面一步一步演示了制作跑酷类游戏,然而由于时间原因,只写到了让角色往前移动为止.这个坑一直没有时间去填,(虽然也没多少人看啦),今天刚好有时间完成了一个跑酷类游戏的Demo.放上来给有兴趣的朋友看看. Demo源码及对应素材下载:链接:http://pan.baidu.com/s/1i4QkkuD 密码:p04w 游戏简要说明 游戏类型:跑酷类游戏(Demo,非完整游戏) 操作方式:左右方向键(可自己移植到手

Unity3D教程宝典之Shader篇:第四讲制作一个美丽的地球

原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 Vertex and Fragment Shader例子二,制作一个自动旋转的3D地球. 下载美丽的地球工程 原理是 2张贴图,一张地球图,一张云层分布图(1)通过uv.x即纹理坐标的横轴与时间相乘,产生球在移动的效果 (2)通过地球和云的颜色值叠加形成 层叠 的效果.注意:贴图的'Wrap Mode'属性一定要设置成Repeat                              关于Wrap Mode当Wrap Mode为Cl

怎样用HTML5 Canvas制作一个简单的游戏

为了让大家清楚HTML5制作游戏的简单流程,所以先了制作一个非常简单的游戏,来看一看这个过程.   游戏非常简单,无非就是英雄抓住怪物就得分,然后游戏重新开始,怪物出现在地图的随机位置,英雄初始化在地图的中间.点击[这里](../simple_canvas_game-master/index.html "simple_canvas_game"),我们可以直接先玩玩这个游戏 ![simple_game](Figure/1_simple_game.png) ## 1. 创建一个Canvas

使用CocosSharp制作一个游戏 - CocosSharp中文教程

注:本教程翻译自官方<Walkthrough - Building a game with CocosSharp>,官方教程有很多地方说的不够详细,或者代码不全,导致无法继续,本人在看了GoneBananas项目代码后,对本教程进行了部分修改,但当前只涉及Android方面,iOS因没有环境验证代码,暂未修改. 本人博客地址:http://fengyu.name 原文链接:http://fengyu.name/?cat=game&id=295 相关资源: 离线PDF文档:Downloa