我在使用javascript的游戏中遇到了问题:
我有一个寻路算法,它保存在从起始点到目的地的数组位置。一个div必须遵循这些位置,并且我有一个与此div关联的图像,必须遵循它。 问题是div对于图像来说移动得太快,所以它的位置不好。
我正在寻找一种方法来对这个div说,如果图像没有到达那个div位置,那么div不能立即采取下一个位置,它必须等待。
我写了这个:
if (!(destX == player.x && destY == player.y)) {
var path = grid.find(player.x / 40, player.y / 40, destX / 40, destY / 40);
for (var i = 0; i < path.length; i++) {
// If the image has arrived to the div position, function continue
if (player.image.x == player.x && player.image.y == player.y) {
player.x = path[i].position.x * 40;
player.y = path[i].position.y * 40;
}
}
}
...但是它无法正常工作,因为当条件不匹配时,for循环会转到下一个&#39; i&#39;索引......
感谢您的帮助!
编辑:我会做一些精确的,函数在更新循环中:
Player.prototype.getMouseMove = function() {
$(".tile, .target").mouseup(function() {
var destX = Math.round($(this).position().left);
var destY = Math.round($(this).position().top);
if (!(destX == player.x && destY == player.y)) {
var path = grid.find(player.x / 40, player.y / 40, destX / 40, destY / 40);
for (var i = 0; i < path.length; i++) {
console.log(i);
if (player.image.x == player.x && player.image.y == player.y) {
player.x = path[i].position.x * 40;
player.y = path[i].position.y * 40;
}
else i--;
}
}
});
}
答案 0 :(得分:1)
稍微修改一下
for (var i = 0; i < path.length; i++) {
// If the image has arrived to the div position, function continue
if (player.image.x == player.x && player.image.y == player.y) {
player.x = path[i].position.x * 40;
player.y = path[i].position.y * 40;
}
else i--; // It wont increase your i if condition is not satisfied.
}