美文网首页
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