我正在尝试建造一个类似太空入侵者的游戏(因为我只在5天前开始编码),如果鞋子撞到僵尸,僵尸会消失并重新出现在屏幕的顶部(再次下降)。我似乎无法让僵尸回到顶端(它们仍然处于动画的最低点)
以下是碰撞测试:
function zombietestCollision(position1, size1, position2, size2) {
if (((position1.left + size1.width) > position2.left) &&
((position1.top + size1.height) > position2.top) &&
((position2.left + size2.width) > position1.left) &&
((position2.top + size2.height) > position1.top)) {
function loop () {
movedown($zombie);
moveup($zombie);
};
$(function zombieloop() {
setInterval( loop, 1 );
});
}
}
我在僵尸向下移动中包含了这个测试
// down movement of the zombies
function movedown($zombie) {
$zombie.animate({
'left': 300,
}, {
duration:5000,
step:function(){
$.each($("#zombie"), function(index,zombie) {
var $zombie = $(zombie);
var $shoe = $("#shoe");
var shoeSize = {
height: $shoe.height(),
width : $shoe.width()
};
var zombieSize = {
height: $zombie.height(),
width : $zombie.width()
};
zombietestCollision($shoe.position(), shoeSize, $zombie.position(), zombieSize);
});
}
当我运行它时,屏幕只是空白。我做了什么正确的? 如果需要,这里是完整的代码:http://jsfiddle.net/JKd9K/7/
很抱歉,我对编程很陌生,所以我很难理解哪些部分我做错了。干杯!
答案 0 :(得分:0)
您需要注意关闭功能的方式。看一下这个http://jsfiddle.net/JKd9K/2/
你的移动功能应该是这样的
function movedown($zombie) {
$zombie.animate({
'left': 300
}, {
duration: 5000,
step: function() {
$.each($("#zombie"), function(index, zombie) {
var $zombie = $(zombie);
var $shoe = $("#shoe");
var shoeSize = {
height: $shoe.height(),
width: $shoe.width()
};
var zombieSize = {
height: $zombie.height(),
width: $zombie.width()
};
zombietestCollision(
$shoe.position(),
shoeSize,
$zombie.position(),
zombieSize);
});
}
});
}
请注意,最后还有一堆额外的括号。