斜めの移動量

タイトル修正 PICO-8
タイトル修正

シューティングゲームなどのキャラクタが、斜め移動する場合、移動量が多くなる問題があります。

上下左右に移動量が1だったとすると、右斜め上への移動の場合、X座標 Y座標ともに移動量を1加えると斜めに約1.4程進むことになります。

例えると、1辺が1の正方形の対角線の長さが、約1.4になるということです。

PICO-8で、cos(0.125)で計算すると(0.125は右斜め上)、0.7071と出ます。

斜め移動は、X Yそれぞれ0.071
斜め移動は、X Yそれぞれ0.071

つまり、斜め方向の移動量が1だと、X座標 Y座標 共に0.7071加えるということになります。

「特に気にしなくていいや」という仕様ならば、それで良いのかもしれませんが、私としては対処したいのです。

そこで、斜め方向を優先してキー入力チェックをし、斜めならX座標 Y座標 共に0.7071加えました。

試しに動かしてみましたが、PICO-8の座標は整数のみを拾う為、等速直線運動にはなりません。

等速運動にするには、0.1〜0.5を加えていく必要があります。

0.7に一番近い0.5を加えて試してみましたが、斜め移動が遅いです(1と0.5では、差が大き過ぎます)。

斜め移動が遅く感じる
斜め移動が遅く感じる

そこで、あまり差が出ないようにする為に、斜め移動をX Y それぞれ1を加え、上下左右には、1.5を加えることにしました(1/0.7≒1.429≒1.5)。

試してみると、等速直線運動になっているし、移動量にそんなに差を感じさせません。

斜め移動との差は余り感じない
斜め移動との差は余り感じない

これが、私の考える現在の最適解です。

ということで、自機の移動処理を実装できました。

コメント

タイトルとURLをコピーしました