2012-11-18 135 views
1

讓我先說我是一個完全的新手,我正在上課,我們的任務之一是做一個基本的比賽遊戲。我們可以使用我們發現的任何腳本,所以我選擇了gamequery。前提是球員是完全自動化的,並且會在時間的x%時間內完成,剩下的時間是y%。我使用了gamequery tutorial space遊戲作爲一種指導,但是當我正在處理移動和碰撞時,我的代碼非常緩慢,特別是所有背部移動。遊戲衝突問題

function Movement(){ 
movetwo = Math.random(); 
$(".obstacle").each(function(){         
        var collided = $(this).collision("#player2Body,."+$.gQ.groupCssClass); 
       if(collided.length > 0){       
          $("#player2").x($("#player2").x()-2);                       
       }    
       var collided2 = $(this).collision("#playerBody,."+$.gQ.groupCssClass); 
       if(collided2.length > 0){     
          $("#player").x($("#player").x()-2);       
       } 
      }); 

if (movetwo <= twol) { 
$("#player2").y($("#player2").y()+2); 
} 
else if ((movetwo > twol) && (movetwo <= (twol + twor))){ 
$("#player2").y($("#player2").y()-2); 
} 
else { 
$("#player2").x($("#player2").x()+2); 
} 
moveone = Math.random(); 
if (moveone <= twol) { 
$("#player").y($("#player").y()+2); 
} 
else if ((moveone > twol) && (moveone <= (twol + twor))){ 
$("#player").y($("#player").y()-2); 
} 
else { 
$("#player").x($("#player").x()+2); 
} 
} 

我知道有一種方法來檢測移動之前的碰撞,但我真的不知道如何實現它,因爲這些移動是隨機的。開關會更快嗎?奇怪的是,它顯示與所有的障礙物碰撞,但是其中有三個障礙物,並且由於某種原因,無論它們被隨機放置在哪裏,它都會忽略這些障礙物。我認爲我比我的技能水平權證更多,所以任何幫助將不勝感激。

回答

1

而不是檢查每個障礙與球員的碰撞,你應該做相反的事情:對每個球員檢查他們是否與障礙物碰撞。

如果要檢查,如果玩家將與障礙物碰撞之前,你真的打動你可以使用覆蓋參數,像這樣的文件中解釋的玩家:https://github.com/onaluf/gameQuery/wiki/API-Changes-in-0.7

+0

謝謝。我會嘗試。我已經看過關於碰撞覆蓋的文檔,但它並沒有真正顯示我是如何有點失落,它是否像var collided = $(this).collision(「。obstacle」,。「+ $。gQ。 groupCssClass);以及如何將其發送給玩家x和y? – flatty

+1

看起來像這樣: $(「#」+ player.id).collision(「。obstacle」,。「+ $。gQ.groupCssClass, {x:player.nextX,y:player.nextY}); –

+0

非常感謝。這對我有很大的幫助。 – flatty