私は Java で小さなゲームを開発しており、プレイヤー移動システムをグリッドベースにならないように書き直しています。これは 2D サイド スクローラーであり、私が達成しようとしているのは基本的なプレーヤーの動きです。ユーザーが押したままにすると、プレーヤーは右のキーを右に移動し、左のキーも同じように移動します。私が抱えている問題は、別のクラスの Paint コンポーネントが、設定クラスに格納されている位置 X と Y を使用して、画面にプレーヤーの画像を描画することです。次に、ユーザーが右を押すと KeyListener クラスが取得され、X 値に追加されます (左も同じですが、毎回マイナス 1 になります)。これにより、画面上でゆっくりと動くキャラクターが作成されます。私がやりたいのは、ピクセルをスキップしているように見えるため、毎回 1 ピクセル以上追加することなく、キャラクターをより速く移動させることです (私は既に試しました)。
私が使用しているコードは最低限のものであり、私の結果は滑らかに動くプレーヤーになるので、これについてもっと良い方法があるかどうか疑問に思っていました。
KeyListener スニペット:
public void keyPressed(KeyEvent arg0) {
int key = arg0.getKeyCode();
if(key == 39) { // Right Key
Settings.player_pos_x++;
}else if(key == 37) { // Left Key
Settings.player_pos_x--;
}
main.Game.redo();
}
画面上のユーザーの描画:
g.drawImage(player_image, Settings.player_pos_x, Settings.player_pos_y, this);
さらに情報やコードが必要な場合は、お気軽にお問い合わせください。