美文网首页
CocosCreate-圆形形状金币获取效果实现

CocosCreate-圆形形状金币获取效果实现

作者: 伏波Rinnsio1xy | 来源:发表于2019-02-21 11:58 被阅读12次
    image.png
    image.png

    核心代码:

    p1:起点
    p2:圆形上的点,通过计算获得

    var _angle = 360 / 10
    for (var i = 0; i < 20; i++) {
            var angle = Math.PI / 20 * (_angle * i)
            var p2 = cc.v2(Math.cos(angle), Math.sin(angle)).mulSelf(this.radius).addSelf(p1);
    }
    
    /*============================================================================
       file  : PlayHp.js
       author: lyn
       date  : 2019-02-12
       desc  : 
    =============================================================================*/
    
    cc.Class({
        extends: cc.Component,
    
        properties: {
            txtPopPrefab: cc.Node,
            radius: 100
        },
    
        start: function() {
            this.m_coinPool = new cc.NodePool()
            for (var i = 0; i < 10; i++) {
                var node = cc.instantiate(this.txtPopPrefab)
                this.m_coinPool.put(node)
            }
            var self = this
        },
    
        getCoinNode: function() {
            if (this.m_coinPool.size() > 0) {
                return this.m_coinPool.get()
            } else {
                return cc.instantiate(this.txtPopPrefab)
            }
        },
    
        play: function(point, targetPoint) {
            var p1 = this.node.convertToNodeSpaceAR(point);
            targetPoint = this.node.convertToNodeSpaceAR(targetPoint);
            var playCallback = function(_coin) {
                var actions2 = []
                _coin.scale = 0
                var spawn1 = cc.spawn(cc.scaleTo(0.3, 1), cc.moveTo(0.3, p2))
                var time = cc.single.Utils.random(3, 6)
                actions2.push(spawn1)
                actions2.push(cc.delayTime(0.3))
                actions2.push(cc.moveTo(time * 0.1, targetPoint))
                actions2.push(cc.callFunc(function() {
                    this.m_coinPool.put(_coin)
                }, this))
                var sq1 = cc.sequence(actions2)
                _coin.stopAllActions()
                _coin.runAction(sq1)
            }.bind(this)
    
            var _angle = 360 / 10
            for (var i = 0; i < 20; i++) {
                var angle = Math.PI / 20 * (_angle * i)
                var p2 = cc.v2(Math.cos(angle), Math.sin(angle)).mulSelf(this.radius).addSelf(p1);
                var coin = this.getCoinNode()
                coin.parent = this.node
                coin.position = p1
                coin.active = true
                playCallback(coin)
            }
        },
    });
    

    相关文章

      网友评论

          本文标题:CocosCreate-圆形形状金币获取效果实现

          本文链接:https://www.haomeiwen.com/subject/wwlryqtx.html