这对我来说是第一次使用JavaScript开发游戏的jQuery和gameQuery,所以我问一些看起来很幼稚的事情,但我真的搞不懂。
我正在开发一个类似太空入侵者的游戏,检测玩家导弹和敌人之间的碰撞不起作用。
这是我的代码:
我的Enemy类的定义
function Enemy(node){
this.node = $(node);
this.pts_value = 0;
return true;
}这是我用来把十个敌人的精灵放在一起的代码。敌人一起向左向右移动
$.each(new Array(10), function(index, value) {
$("#enemy_group").addSprite("enemy2_"+index,{animation: enemies[2],
posx: index * 55, posy: 0, width: 48, height: 48})
$("#enemy2_"+index).addClass("enemy");
$("#enemy2_"+index)[0].enemy = new Enemy($("#enemy2_"+index));
$("#enemy2_"+index)[0].pts_value = 150;
});所以当我需要移动敌人时,我一起移动敌人,我移动包括所有精灵"#enemy_group“的组。
if(ENEMY_TO_RIGHT){
var enemiesNewPos = (parseInt($("#enemy_group").css("left"))) + ENEMY_SPEED;
if(enemiesNewPos < PLAYGROUND_WIDTH - 550){
$("#enemy_group").css("left", ""+enemiesNewPos+"px");
} else {
ENEMY_TO_RIGHT = false;
}
} else {
var enemiesNewPos = (parseInt($("#enemy_group").css("left"))) - ENEMY_SPEED;
if(enemiesNewPos > 0){
$("#enemy_group").css("left", ""+enemiesNewPos+"px");
} else {
ENEMY_TO_RIGHT = true;
}
}最后为了碰撞检测,我想移除玩家的导弹击中的敌方精灵,每个导弹精灵都有一个新的类名".playerMissiles“。
$(".playerMissiles").each(function(){
var posy = parseInt($(this).css("top"));
if(posy < 0){
$(this).remove();
return;
}
$(this).css("top", ""+(posy - MISSILE_SPEED)+"px");
//Test for collisions
var collided = $(this).collision(".enemy, .group");
if(collided.length > 0){
//An enemy has been hit!
collided.each(function(){
$(this).setAnimation(enemies[0], function(node){$(node).remove();});
})
}
});我一直在关注gameQuery网站上的文档教程。
感谢你的帮助,谢谢,
发布于 2011-07-05 15:08:26
我看不出你的代码有什么问题。我只能给你几点建议:
和组(以及磁贴图)组成的父级链,如果是这样,
只是为了确保您使用的是什么版本的gameQuery和jQuery?来自gitHub的最新版本不稳定,我不推荐使用它,用户为0.5.1。
发布于 2011-07-04 07:23:20
你可以使用jquery collision插件,这样你就可以避免自己重复逻辑。
希望这能有所帮助。干杯
https://stackoverflow.com/questions/6566054
复制相似问题