0

最初にランダムに配置された複数のオブジェクト(ボール)を作成するプログラムがありますが、現在は、中心が同じになるまで、プレーヤーのボールを最も近いオブジェクトに向かって自動的に移動しようとしています。「最も近い」というインデックスを持つdistanceという配列に格納されている最も近いオブジェクトの距離を決定し、速度を別の場所で初期化された変数deltaとして設定しました。方向を正しくするにはどうすればよいですか?今は斜めに動いていますが、一番近いボールには向かっていません

座標x[最も近い]と座標[最も近い]は、最も近いオブジェクトのx座標とy座標です。

playerObject.getXとplayerObjectgetYは、プレーヤーのオブジェクトの座標を教えてくれます

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);         
        } 
    }
}
4

2 に答える 2

0

4 つの準基本 (斜め) 方向のハンドラーが表示されますが、基本的な4 つの方向は表示されません。このゲームでは、たとえば、敵は 8 つの方向のいずれかから、ここに示す方法で段階的にプレーヤーに近づきます。move(int row, int col)

于 2012-10-12T01:49:03.537 に答える
0

これに非常に似たもの:

angle=atan2(ClosestBally-player_y,closestBallx-player_x);
dxperframe = cos(angle);
dyperframe = sin(-angle);
于 2012-10-12T01:36:23.523 に答える