下面是具体的代码,注意,我这里用到了NGUI这个插件。大概的原理很简单,就用了2张图片Sprite,同时向下移动,当上面一张图片移动到下面一张图片原来的位置时,就把这2张图片向上移到初始的位置。这时,还需要交换显示图片,接着继续移动即可。为了显示很多滚动图片,只需要不断改变图片名字即可。代码中,抽奖部分使用了概率控制的随机抽取。当我们确定了rollingCountTarget这个变量时,就确定了最终抽奖结果,在Update函数里判断,如果遇到这个结果便停下来。当然,速度也要控制好。如果你用NGUI的话,只需要给脚本绑定两个Sprite图片即可,同时把Panel对象的Clipping设为Soft Clip,设定好显示范围即可。

    public UISprite Icons;//中间的图片
    public UISprite IconsA;//上方的图片

    private float rollSpeed;//滚动速度变量
    private int rollingCount;//图片滚动次数变量
    private int rollingCountTarget;//目标图片滚动次数

    private Vector3 originPos;//图片原始位置
    private Vector3 originPosA;//上方图片原始位置
    private float rollCount;//总的滚动次数
    private string[] LotteryImageNames;//图片名字数组
    private bool IsRolling;

    ;//可以抽到的物品类型数目
    private const float maxRollSpeed = 2.0f;//最大滚动速度
    private const float minRollSpeed = 0.4f;//最小滚动速度

    void Start()
    {
        rollCount = ;
        IsRolling = false;

        //初始化图片原始位置
        originPos = Icons.transform.position;
        originPosA = IconsA.transform.position;

        //先不显示图片
        Icons.enabled = false;
        IconsA.enabled = false;

        //初始化要滚动的图片名字数组
        LotteryImageNames = new string[LotteryItemTypeCount];
        LotteryImageNames[] = "Joey_Equipment01";
        LotteryImageNames[] = "Joey_Equipment02";
        LotteryImageNames[] = "Joey_Equipment03";
        LotteryImageNames[] = "Joey_Equipment04";
        LotteryImageNames[] = "Joey_Equipment05";
        LotteryImageNames[] = "Joey_Equipment06";
        LotteryImageNames[] = "Joey_Equipment01";
    }

    void Update()
    {
        if (IsRolling)
        {
            Icons.transform.Translate(Vector3.down * Time.deltaTime * rollSpeed);
            IconsA.transform.Translate(Vector3.down * Time.deltaTime * rollSpeed);
            if (IconsA.transform.position.y <= originPos.y)
            {
                Icons.transform.position = new Vector3(Icons.transform.position.x, originPos.y, Icons.transform.position.z);
                IconsA.transform.position = new Vector3(IconsA.transform.position.x, originPosA.y, IconsA.transform.position.z);
                rollingCount++;

                //互换图片
                Icons.spriteName = IconsA.spriteName;
                IconsA.spriteName = LotteryImageNames[(rollingCount + ) % LotteryItemTypeCount];
                rollSpeed = rollSpeed - (maxRollSpeed - minRollSpeed) / (rollingCountTarget + LotteryItemTypeCount * rollCount);
            }
            if (rollingCount == rollingCountTarget + LotteryItemTypeCount * rollCount)
            {
                IsRolling = false;
                IconsA.enabled = false;
            }
        }
    }

    //用随机数确定图片需要滚动的次数,同时控制随机概率
    public void GenerateRollingCount()
    {
        , );
         && num < )
        {
            rollingCountTarget = ;
        }
         && num < )
        {
            rollingCountTarget = ;
        }
         && num < )
        {
            rollingCountTarget = ;
        }
         && num < )
        {
            rollingCountTarget = ;
        }
         && num < )
        {
            rollingCountTarget = ;
        }
         && num < )
        {
            rollingCountTarget = ;
        }
         && num < )
        {
            rollingCountTarget = ;
        }
    }

    //抽奖按钮
    void Lottery()
    {
        GenerateRollingCount();
        rollingCount = ;
        rollSpeed = maxRollSpeed;
        IsRolling = true;
        Icons.enabled = true;
        IconsA.enabled = true;
    }

Unity3D实现简单的抽奖程序的更多相关文章

  1. JavaScript编写简单的抽奖程序

    1.需求说明 某公司年终抽奖,需要有如下功能 1)可以根据实际情况设置到场人数的最大值 2) 点击“开始”,大屏幕滚动,点击“停止”,获奖者的编号出现在大屏幕上 3)在界面里显示全部奖项获奖人编号 4 ...

  2. 使用jQuery+PHP+Mysql实现抽奖程序

    抽奖程序在实际生活中广泛运用,由于应用场景不同抽奖的方式也是多种多样的.本文将采用实例讲解如何利用jQuery+PHP+Mysql实现类似电视中常见的一个简单的抽奖程序. 查看演示 本例中的抽奖程序要 ...

  3. 如何用 Python 写一个简易的抽奖程序

    不知道有多少人是被这个头图骗进来的:) 事情的起因是这样的,上周有同学问小编,看着小编的示例代码敲代码,感觉自己也会写了,如果不看的话,七七八八可能也写的出来,但是一旦自己独立写一段程序,感觉到无从下 ...

  4. jQuery幸运大转盘_jQuery+PHP抽奖程序的简单实现

    jQuery幸运大转盘_jQuery+PHP抽奖程序的简单实现 在线实例 查看演示 完整代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...

  5. 简单的javascript抽奖程序

    <html>  <head>   <title>手机号码抽奖程序</title>   <script>    //声明一个数组装住号码,可根 ...

  6. sql的行转列(PIVOT)与列转行(UNPIVOT) webapi 跨域问题 Dapper 链式查询 扩展 T4 代码生成 Demo (抽奖程序)

    sql的行转列(PIVOT)与列转行(UNPIVOT)   在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比 ...

  7. Unity3D中简单的C#异步Socket实现

    Unity3D中简单的C#异步Socket实现 简单的异步Socket实现..net框架自身提供了很完善的Socket底层.笔者在做Unity3D小东西的时候需要使用到Socket网络通信.于是决定自 ...

  8. 利用Python写一个抽奖程序,解密游戏内抽奖的秘密

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 极客挖掘机 PS:如有需要Python学习资料的小伙伴可以加点击下 ...

  9. javascript实现抽奖程序

    昨天开年会的时候看到一个段子说唯品会年会抽奖,结果大奖都被写抽奖程序的部门得了,CTO现场review代码. 简单想了一下抽奖程序的实现,花了十几分钟写了一下,主要用到的知识有数组添加删除,以及ES5 ...

随机推荐

  1. POJ2528+线段树

    见代码. /* 线段树+Lazy 题意:有一面墙,被等分为1QW份,一份的宽度为一个单位宽度. 现在往墙上贴N张海报,每张海报的宽度是任意的,但是必定是单位宽度的整数倍,且<=1QW. 后贴的海 ...

  2. jmeter summariser(命令行执行时的输出) 、查看结果树等结果中文乱码

    在使用jmeter测试时,如果你的sampler名字为中文.或者输出的结果信息有中文,你会发现它们都是乱码,非常蛋碎!原因是:  jmeter的默认编码为:ISO-8859-1, 解决方案就是要修改它 ...

  3. highcharts 多数据+切换

    var highchartsOptions = { chart:{ renderTo:'container' }, title:{ text:'指标数据' }, tooltip:{ pointForm ...

  4. BZOJ 2553 禁忌

    首先我们要考虑给定一个串,如何将他划分,使得他有最多的禁忌串 我们只需要按里面出现的禁忌串们的出现的右端点排序然后贪心就可以啦 我们建出AC自动机,在AC自动机等价于走到一个包含禁忌串的节点就划分出一 ...

  5. Android:安卓资源引用符号的含义

    @代表引用资源 @*代表引用系统的非public资源,如: @*android:color/white @[package:]type/name引用自定义资源,如: android:text=&quo ...

  6. android开发无障碍app

    最近做一些为盲人提供服务的APP,还是挺有感触的,感谢手机和互联网的普及,他们的生活比以前丰富了很多. 通过读屏软件,盲人可以操作手机,上网浏览信息.读屏软件的工作原理很简单,就是读出屏幕上按钮.文本 ...

  7. lib库依赖解决

    当前环境之前是装过MySQL官方版本5.6.22,想测试Percona版本MySQL.启动Percona-MySQL报错. [root@dg7 support-files]# /etc/init.d/ ...

  8. JSP JSP工作原理 JSP语法 JSP声明 JSP注释 JSP指令 jsp九大隐式/内置对象

    1 什么是JSP   1)为什么说,Servlet是一个动态Web开发技术呢?     Servlet是基于服务端的一种动态交互技术,     HttpServletRequest表示客户端到服务端的 ...

  9. WinAPI——钩子函数大全

    SetWindowsHookEx 函数功能:该函数将一个应用程序定义的挂钩处理过程安装到挂钩链中去,您可以通过安装挂钩处理过程来对系统的某些类型事件进行监控,这些事件与某个特定的线程或系统中的所有事件 ...

  10. Java面试题-并发容器和框架

    1. 如何让一段程序并发的执行,并最终汇总结果? 答:使用CyclicBarrier 和CountDownLatch都可以,使用CyclicBarrier 在多个关口处将多个线程执行结果汇总,Coun ...