我正在尝试制作一个你必须在平台上移动球的游戏。在游戏开始时,球落在平台上然后你可以用箭头键移动它。这是工作,这里没有问题。
游戏开始于在my fiddle中可以看到一个落在黄色方块上的球(点击1开始)。该平台在javascript
中构建如下(对于级别1和级别2):
var levels = [
[
[1,1,1,1,1],
[1,1,1,1,1],
[1,2,1,1,1]
],
[
[1,1,1,2,1],
[1,1,1,1,1],
[1,1,1,1,1]
]
];
其中1 =绿色瓷砖,0 =无瓷砖,2是黄色瓷砖。
为了让球落在黄色方块上,我有以下代码:
go: function() {
ball.reset((1*100+50),(2*100+50));
start();
}
其中(1*100+50)
是黄色磁贴的x坐标,(2*100+50)
是y。更好的解释:1是右边的1个瓷砖*瓷砖长度+ 50(+50是在div的中间放下球)。一切都按预期工作。
但是,如果我加载2级(请参阅小提琴,单击2),我们会看到黄色方块已移动,但球仍然在固定位置掉落(请参阅go: function
)。这就是我需要解决的问题。
我希望在加载关卡时加载这些黄色瓷砖坐标。在这种情况下,最简单的方法是在每个级别添加这些坐标。我想到了这样的事情:
var levels = [
{
yellowTile : [1, 2],
tiles : [ [1,1,1,1,1],
[1,1,1,1,1],
[1,2,1,1,1] ]
},
{
yellowTile : [3, 0],
tiles : [ [1,1,1,2,1],
[1,1,1,1,1],
[1,1,1,1,1] ]
}
];
所以go: function
就像:
go: function() {
ball.reset((yellowTileX*100+50),(yellowTileY*100+50));
start();
}
但我没有运气做这项工作。希望有人可以帮助我。
非常感谢
答案 0 :(得分:1)
找到起始位置的最简单方法是在循环所有切片时保存它。我已经修改了你的脚本,因此通过在loadLevel中添加以下内容来保存起始位置:
if(levels[level][i][j] === 2) {
startPosition = {x: j, y: i};
}
我已将函数getStartPosition()添加到平面类中,此函数可用于“go”函数以获取平面的起始x和y。这可用于将球重置为正确的x和y
go: function() {
ball.reset((plane.getStartPosition().x*100+50),(plane.getStartPosition().y*100+50));
start();
}
查看我修改后的版本:http://jsfiddle.net/BKEbL/7/