***游戏开发--转盘抽奖逻辑思路***

星期一110 2019-09-20 04:18:28
***游戏开发--转盘抽奖逻辑思路*** > 引擎:CocosCreator > 语言:JS 思路:无论什么语言和引擎所有思路和逻辑是互通的,接下来要说的均为本地获取数据;转盘抽奖的方式很多种,我们只说其中最简单实用易理解的方式--按照角度值计算 1>比如转盘等分为8份奖品区,每个区域的角度自然为45度。 2>根据策划的随机概率随机出数值,跟具数值判断应该旋转的度数。 其实就这两条,抽奖过程中其实奖品已经获得,转盘旋转只不过是效果而已,如果作为一个新手还不太情况接下来请看代码展示 ``` 这里我就按照转盘等分8份举例,首先搞一个随机概率 //100 200 300 400 500 600 700 900 -----奖品 //40% 25% 15% 10% 4% 3% 2% 1% -----概率 this.randomArray = []; for(let i = 1; i<= 40; i++){ this.randomArray.push("100"); } 继续循环按照不同比例push到数组中......... ``` ``` 然后最起码要有一个按钮吧,点击抽奖; calculateCallBack: function(){//按钮回调 let date = new Date(); let lastTime = cc.sys.localStorage.getItem("lastTime"); if(lastTime == null){ cc.sys.localStorage.setItem("lastTime",date.getTime()); this.randomReward();//这才是驱动转盘旋转,其他的可以不要;其他作用:点击一次免费抽奖在点击的话需要间隔24时 } else{ let intervalTime = (date.getTime() - lastTime) / 1000; if(intervalTime > 24 * 60 * 60){ cc.sys.localStorage.setItem("lastTime",date.getTime()); this.randomReward(); } else{ //调用播放视频 } } }, //具体功能可根据自己的需求添加,这都不是事 ``` ``` 最重要的也就是转盘转动 randomReward: function(){ let rand = Math.floor(Math.random() * 100); let random_Angle = null;//随机度数 let random_TurnsNumber = null;//随机圈数 this.reward = null; switch(this.randomArray[rand]){ case "100": //减去当前的角度:就是多次转动后转盘停止后的一个角度;this.rotaryTable代表转盘 random_Angle = Math.floor(Math.random() * 45) + 0 - this.rotaryTable.angle % 360; //获取奖励逻辑 break; case "200": random_Angle = Math.floor(Math.random() * 45) + 45 - this.rotaryTable.angle % 360; break; case "300": random_Angle = Math.floor(Math.random() * 45) + 90 - this.rotaryTable.angle % 360; break; 继续case.................... } random_TurnsNumber = Math.floor(Math.random() * 6 ) + 12;//随机转动的一个圈数 let sumAngle = 360 * random_TurnsNumber + random_Angle;//当前需要转盘旋转的角度 this.rotaryTable.runAction(cc.rotateTo(8,sumAngle).easing(cc.easeInOut(3.0))); }, ```
...全文
73 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

726

社区成员

发帖
与我相关
我的任务
社区描述
Cocos2d-x相关内容讨论专区
社区管理员
  • Cocos2d-x
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧