方向キーの入力を解除した後も、別のキーを入力していれば、それまでの進行方向に直進し続ける方法

<やりたいこと>

accel_startのステートへと遷移したあと、charge&accelのキーのみを入力し続けている場合(=方向キーの入力は解除している場合)でも、そのまま進行方向に直進し続けるようにしたい。

<困っていること>
現在はaccel_startのステートへと遷移後、charge&accelのキー入力を行い続けていても、方向キーの入力を解除してしまうと、プレイヤーオブジェクトがその場で03_boostのアニメーションを表示し続けたまま静止してしまいます。

ChatGTPに質問しながら「変数のlast_dirを-1/0/1で代入するようにするんだよ」的なことを教えてもらいつつあれこれ試したのですが、どれも上手くいかず、途方にくれております。

chrome-capture-2025-08-20

少し手元でためしてみました。

バグなのか仕様なのかわかりませんが、移動キー入力直後にアクセルキーを押すと進みますが移動キー入力しばらくしてからアクセルキーをおすと止まってしまうようです。(移動キーの入力と競合して停止している・・・?)

少し開発に確認させていただきます。

「いいね!」 1

ご確認ありがとうございます。
ふと思ったのですが、「moving」ステート時点までは方向入力キーの押下により発生している上下左右への移動速度を、「accel_start」ステートへ遷移後も“方向入力キーの入力をやめても”そもまま引き継ぐ、というような処理はできないのでしょうか?

もしそのような処理を実装できれば、charge&accelのキーのみを入力している場合でも、それまでの進行方向に対してプレイヤーノードがそもまま進み続けるのかも?と考えました。

慣性のコントロールでどうにかならないかな、とも考えリンクの「その他の条件設定」やステートの「実行アクションの追加」でそれらしき項目を探してみましたが、見つける事ができませんでした。

基本的に物理処理として床等と触れると減速停止するようになっています。

そのような処理について考えられるのは2点で、

  1. MoveandJumpSettingsの「加速移動」を試してみる。
  2. GameObjectのボディタイプをGroundからFloatingにしてみる。

といったあたりかなとおもいます。試して見ていただくのがよいかもしれません。

「いいね!」 1

競合、というワードをヒントに試行錯誤を続けたところ、以下で希望していた挙動の実装に成功しました。

  1. movingとaccel_startの間にもう1つステートを挿入する。
  2. その挿入したステートでup_move_key_index等の上下左右4方向分のプロパティを「未設定」へと変更する。
  3. 同ステートの5つ目の実行アクションに「表示方向へ移動」を追加。

ご助言いただき、ありがとうございました!

「いいね!」 1