[英]gameQuery collision detection
這是我第一次探索 jQuery 和 gameQuery 以使用 JavaScript 構建游戲,所以我問的問題可能看起來很幼稚,但我真的無法理解。
我正在開發像 Space Invader 這樣的游戲,檢測玩家導彈和敵人之間的碰撞不起作用。
這是我的代碼:
我的敵人 class 的定義
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;
}
}
最后為了碰撞檢測,我想移除玩家導彈擊中的敵人精靈,每個導彈精靈都有一個添加的 class 名稱“.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 網站上的文檔教程。
任何幫助表示贊賞,謝謝,
我看不出你的代碼有任何問題。 我只能給你幾個指點:
只是為了確定您使用的是哪個版本的 gameQuery 和 jQuery? gitHub 的最后一個版本不穩定,我不建議使用它,而是使用用戶 0.5.1。
您可以使用jquery 碰撞插件,避免自己做邏輯。
希望這可以幫助。 干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.