2012-10-12 98 views
0

對我有創建之初多個隨機放置的對象(球),現在即時通訊嘗試,直到它們的中心都是一樣的自動移向最接近物體的球員球的程序。我已經確定存儲在名爲距離的數組中的最接近對象與「最接近」索引之間的距離,並將速度設置爲其他地方初始化的變量增量,我如何獲得方向?現在 它只是對角地移動,但不是朝向最近的球移動對象到另一個隨機路徑

coordinatex [最接近]和coordinatey [最接近]是最接近的對象的x和y座標。

playerObject.getX和playerObjectgetY給我的球員的座標onject

public void move(int delta) { 
    for(int i=0; i<distance[closest]; i++) { 
     if (x<coordinatex[closest] && y<coordinatey[closest]) {  
      playerObject.setX(playerObject.getX() + 0.1*delta);  
      playerObject.setY(playerObject.getY() + 0.1*delta);  
     } else if(x>coordinatex[closest] && y>coordinatey[closest]) {  
      playerObject.setX(playerObject.getX() - 0.1*delta);  
      playerObject.setY(playerObject.getY() - 0.1*delta);  
     } else if(x>coordinatex[closest] && y<coordinatey[closest]) {  
      playerObject.setX(playerObject.getX() - 0.1*delta);  
      playerObject.setY(playerObject.getY() + 0.1*delta);  
     } else if (x<coordinatex[closest] && y>coordinatey[closest]) {  
      playerObject.setX(playerObject.getX() + 0.1*delta);  
      playerObject.setY(playerObject.getY() - 0.1*delta);   
     } 
    } 
} 

回答

0

東西非常類似:

angle=atan2(ClosestBally-player_y,closestBallx-player_x); 
dxperframe = cos(angle); 
dyperframe = sin(-angle); 
+0

你能解釋dxperframe和dyperframe嗎? – amanda23

+0

atan2是什麼? – amanda23

+0

dxperframe = delta x每更新 –

0

我看到你的四個半基數處理器(對角線)方向,但不是四個cardinal directions。在這種game,例如,敵人在接近使用move(int row, int col)方法的逐步的方式播放,here所示,來自任何八個方向。

+0

但我的程序沒有鍵盤輸入,對象應該自動移動到另一個對象 – amanda23

+0

我認爲你的'move()'是爲模擬時間的每個增量調用的。遊戲使用默認啓用的'javax.swing.Timer'。點擊任何方塊可以看到移動的玩家前進的敵人。 – trashgod

相關問題