欢迎来到淼淼之森的博客小站。  交流请加我微信好友: studyjava。  也欢迎关注同名公众号:Java学习之道

CocosCreator之大转盘

  |   0 评论   |   0 浏览

推荐阅读:

1.在场景中搭建大转盘场景

假设 奖项有n项,对应的每项旋转角度如下:

|第几项 | 需要旋转的角度 |
|--|--|
|0 | 360/n/2 |
|1 | 360/n+第0项角度 |
|2 | 360/n+第1项角度 |
|... | ... |

例如:奖项一共6项
| 第几项 | 需要旋转的角度 |
|--|--|
0 | 360/n/2=30 |
|1 | 360/n+第一项角度 =30+60=90|
|2 | 90+60=150 |
|3 | 210 |
|4 | 270 |
|5 | 330 |
|... | ... |

2.代码控制大转盘的转动

大转盘的思想:预先给定一个本轮大转盘的奖项的下标,然后再随机一个该奖项的角度,核心代码:

var angle = app.random((idx + 1) * (-60) + 10 + 360, (idx + 0) * (-60) - 10 + 360, false) + 1800;

其中,60代表360/n,上面可以当成一个公式使用。
旋转函数代码:

    /// 转动大转盘,idx表示奖项的下标
    rollPanel(idx, call) {
        var self = this;
        self.uiRoot.close.active = false;
        self.uiRoot.begin.enabled = false;
        var angle = app.random((idx + 1) * (-60) + 10 + 360, (idx + 0) * (-60) - 10 + 360, false) + 1800;
        var rot1 = cc.rotateTo(5, angle).easing(cc.easeExponentialInOut(10.0));
        var call1 = app.callFunc(function (adt) { self.uiRoot.close.active = true; self.uiRoot.begin.enabled = true; if (call) { call(); } });
        this.uiRoot.panel.root.stopAllActions();
        this.uiRoot.panel.root.rotation %= 360;
        this.uiRoot.panel.root.runAction(cc.sequence(rot1, call1));
    },

标题:CocosCreator之大转盘
作者:shirln
地址:https://www.mmzsblog.cn/articles/2019/08/09/1565361901961.html

如未加特殊说明,文章均为原创,转载必须注明出处。均采用CC BY-SA 4.0 协议

本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。若本站转载文章遗漏了原文链接,请及时告知,我们将做删除处理!文章观点不代表本网站立场,如需处理请联系首页客服。
• 网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。
• 公众号转载请联系网站首页的微信号申请白名单!

个人微信公众号 ↓↓↓                 

微信搜一搜爱上游戏开发