1

これをお読みいただきありがとうございます。今、私は本当に基本的なタイルベースのゲームを作っています。マップは大量の16x16タイルであり、キャラクター画像も16x16です。私のキャラクターには、スプライトクラスの拡張である独自のクラスがあり、xとyの位置はタイルの位置として保存されます。

ちなみに、私はpygameにかなり不慣れです。

私の質問は、キャラクターの動きを一度に1タイルに制限することを計画していますが、プレーヤーが方向キーを数十回すばやく押しても(WASDまたは矢印キー)、そのようにする方法がわかりません。 )特定の速度でのみタイルからタイルに移動します。どうすればこれを一般的にpygameで実装できますか?(ポケモンやNexusTkのようなゲームの動きに似ています)。1回の移動で、プレーヤーはタイルになります。たとえば、タイルの途中で停止することはできませんでした。

御時間ありがとうございます!ライアン

4

1 に答える 1

0

キャラクターの位置をグリッド座標として保存します。したがって、彼が (2,0) にいる場合、(32,0) にレンダリングされます。次に、ゲームは彼がタイル間を移動するようにアニメーション化しますが、彼はどちらか一方にいます. move 状態の間、0 から tilewidth までの (x,y) オフセットをレンダリングします。

時間が経過した場合/アニメーションが完了した場合、キーを押すたびに1つの動きが必要なようです。そう:

  1. キーを押すと、次のように切り替わります: アニメーション状態
  2. 宛先タイル座標の設定
  3. 経過時間に応じて、0との間のオフセットを描画します。時間が 1 秒未満の場合、0 から 16 の間でスケーリングします。tilewidthoffset = (elapsed_ms / 1000.) * tile_w
  4. 経過時間が >= アニメーションの長さ (上記で 1000 を選択) になったら、静止状態に切り替えます。

アニメーション状態でキープレスが発生した場合は、無視します。

Pygame の例: numpy をマップ配列に使用。

pygame デモのスクリーンショット

于 2012-11-10T23:39:46.873 に答える