【问题标题】:cocos2d trying to keep sprites within the screencocos2d 试图将精灵保持在屏幕内
【发布时间】:2016-02-02 14:11:43
【问题描述】:

所以我有这些精灵从左到右斜向上移动。问题是它们会无限向上移动,并移出屏幕。我希望他们在某个边界内移动。

我尝试使用夹具,但它不起作用。我对 cocos2d-js 还很陌生,所以我没有太多想法。如果有人可以提供帮助,我将不胜感激。

for(var i=0;i<minions.length;i++){

        var x = Math.floor((Math.random() * size.width));
        var y = Math.floor((Math.random() * size.height / 10) + size.height / 50);

        var ms = Math.floor((Math.random() + 1));
        var mas = (size.width - x) / size.width * ms
        var m2s = x / size.width * ms;


        var move = cc.MoveBy.create(mas, cc.p(size.width - x, y));
        var moveaway = cc.MoveBy.create(ms, cc.p(-size.width, -y));
        var move2 = cc.MoveBy.create(m2s, cc.p(x, y));

        var minSeq = cc.Sequence.create(move, moveaway, move2);

        minions[i].runAction(minSeq).repeatForever();

        minions[i].setPosition(cc.p(cc.clampf(minions[i].x,0,size.width),cc.clampf(minions[i].y,0,400)));
        this.addChild(minions[i]);
    }

在此之前,我厌倦了类似的 if 循环

if(minions[i].position == 0){//向上移动}

当我遇到精灵不断下降的问题时。 它只会在精灵第一次出现在屏幕下方时起作用,但在那之后,它不会对精灵产生任何影响

【问题讨论】:

    标签: cocos2d-x sprite cocos2d-js


    【解决方案1】:

    让我们先在屏幕坐标中定义边界

    var xMin = 0, yMin = 0, xMax = 320, yMax = 240;
    

    另外让我们假设有一个全局变量保存你的仆从数组。

    var minions = [];
    

    我很确定您已经使用 scheduleUpdate() 安排了更新 所以现在您可以在update 函数中进行此检查

    update: function(dt){
       //your code
       minions.forEach(function(minion){
          var p = minion.getPosition();
          if (p.x > pMax) {
             //change minion speed to go down
          } 
          if (p.x < pMin){
            //change minion speed to go up
          }
          // same for y-axis
       });
    }
    

    【讨论】:

    • 好的,所以这可能是一个糟糕的问题,但我不知道如何调用 minions 来更新函数。它们在 init:fucntion() 中,我添加了一个标签 500,所以我可以使用 var minions = this.getChildByTag(500)。但它一直说更新函数中的 var minions 为空
    • 嗯,你可以将它们存储在一个全局变量中,或者你自己创建的 gameLayer 的附加属性中
    • 哦,我不希望它成为全局变量,但这是修复它的最简单方法,哈哈。非常感谢您的帮助!
    • np man,你可以选择正确的答案,关闭问题
    猜你喜欢
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多