キノコが何か作るブログ

ゲーム・ドット絵・アプリなどを作ります

MENU

ローグライクゲーム進捗:ゲームエンジンのトラブルを解決した

ターン制御がうまくいかなかった理由

実は、Rot.jsのゲームエンジンはロック中でもキー入力ができるということがわかりました。

ゲームエンジンのロックは、あくまでエネミーにターンが進まないようにするためであり、キー操作を制御するものではなかったわけです。

なので、移動が終わってからキーボードリスナーを削除するのでは遅すぎます。

 

考えてみれば理にかなっています。ステータスや所持品の確認をしただけで自分のターンが終わってしまったら、やりずらくて仕方ないです。

Rot.jsはUNIX時代のローグライクゲームを対象にしたライブラリなので、アニメーションによる遅延とかは考慮されていないのだと思います。

 

今回、tweenerでの移動は400ミリ秒かかるように設定しています。

そのため、移動終了までの400ミリ秒の間はリスナーが生きてますので、キー入力がされていきます。

なので、キーが押されたらすぐにリスナーを削除する必要があります。

phina.jsでは、tweener.playingで移動中かどうかをチェックできます。

今回はそれを使って、移動アニメーションが実行中の場合はキー入力を受け付けないようにしました。

盲点だったこと

ちなみに、プレイヤーのtweener.playingだけでは不十分です。

ちゃんとマップのtweener.playingも確認しなければなりません。

そうしないとマップスクロールのアニメーションが遅延してしまいます。

Mapスクロールも付けて完成

エンジントラブルを解決し、Mapスクロールを付けたものがこちらになります。

f:id:mizukinoko:20191219185023g:plain

Rot.jsのゲームエンジンは、すこしカクつきがあります。

個人的に少し気になるので解決したいですが、ゲームをプレイする上では特に問題がないので、余裕のある時にちまちまやろうと思います。

 

本日の進捗は以上です。

それでは。

プライバシーポリシー