所以我有这些精灵从左到右对角向上移动。问题是它们将无限向上,并移出屏幕。我希望他们在某个边界内移动。
我尝试使用过夹子,但它不起作用。我对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){//向上移动}
当我遇到连续向下的精灵问题时。 它只会在精灵出现在屏幕下方时第一次工作,但在此之后,它不会对精灵产生任何影响
答案 0 :(得分: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
});
}