最近、フリー素材を利用してゲームを制作しようとしており、今回のテーマはQTEです。ただし、どのゲームにもアニメーションが必要です。したがって、まず基本的なアニメーションを設(shè)定し、トリガーなどの詳細(xì)な部分は後で要求に応じて変更しようと考えています。
まずは走るアニメーションです。
元々は狀態(tài)を管理するためにboolを使用していましたが、後でfloatを使用するとより柔軟に切り替えることができることに気付いたため、floatを使用しました。移動(dòng)入力は通常のGetAxisを使用し、入力値を數(shù)値化し、値が変化したときに走るアニメーションを再生します?;镜膜恕ⅴ楗螗衰螗挨摔咸丐藛?wèn)題はありません。
次にジャンプです。ジャンプは少し複雑です。キャラクターの足元に射線を発射して地面にいるかどうかを検出し、ジャンプが可能か、滯空しているかなどを判斷する仕組みです。
そして、ジャンプを追加したときに問(wèn)題が発生しました。キャラクターは地面にいるときにジャンプできるようにし、ジャンプの瞬間にジャンプアニメーションを再生するようにしましたが、ジャンプ後にif(isGrounded){SetBool("Jump",false)}を使ってキャラクターが地面に著地したらジャンプ狀態(tài)を解除するようにしていました。しかし、実行するとジャンプ中にアニメーションが表示されませんでした。
調(diào)査した結(jié)果、ジャンプ後に射線の関係で、ジャンプが開始された瞬間にはジャンプが有効になりましたが、地面から完全に離れていないため、ジャンプがすぐに解除されたことが原因でした。
解決策は次の通りです:
- ジャンプが開始された瞬間からタイマーを開始します。
- タイマーが一定の時(shí)間を超えた場(chǎng)合(射線が地面から離れるだけの時(shí)間があれば十分です)、ジャンプを解除します。これにより、ジャンプが開始された瞬間にジャンプがすぐに解除されることなく、アニメーションが表示されるようになります。
今日はここまでです。明日は続きを補(bǔ)完します。