cocos2d 试图让精灵保持在屏幕内
cocos2d trying to keep sprites within the screen
所以我有这些精灵从左到右沿对角线向上移动。问题是它们会无限向上,并移出屏幕。我想让他们在某个边界内移动。
我试过使用 clamp 但它不起作用。我对 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){//向上移动}
当我遇到精灵连续下降的问题时。
它只会在精灵第一次出现在屏幕下方时起作用,但之后,它不会对精灵产生任何影响
我们先用屏幕坐标定义边界
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
});
}
所以我有这些精灵从左到右沿对角线向上移动。问题是它们会无限向上,并移出屏幕。我想让他们在某个边界内移动。
我试过使用 clamp 但它不起作用。我对 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){//向上移动}
当我遇到精灵连续下降的问题时。 它只会在精灵第一次出现在屏幕下方时起作用,但之后,它不会对精灵产生任何影响
我们先用屏幕坐标定义边界
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
});
}