ゴマちゃんフロンティア

気まぐれと勢いで作るUnityゲーム開発日記です

【開発メモ】アクション「ダッシュジャンプ」の実装

time 2016/03/06

というわけで、前回「走り移動」を追加したので、その派生アクションとして「ダッシュジャンプ」を実装します!
走り中やダッシュ中にジャンプでより遠くまで飛べるものです。

20160205_s

モーションは回転ジャンプです!
(相変わらずgif画像を撮るのが下手ですが・・・)
現状では空中攻撃や2段ジャンプに派生できないため、着地するまで回転し続けます。
空中攻撃はともかく、ダッシュジャンプ中に2段ジャンプを出来るようにするかは考える必要があります。

モーション制御とスクリプト作成

AnimatorController上で「Run」「Dash」が既にあるので、ここからジャンプ入力でダッシュジャンプへ派生するようにします。
自分の場合、ジャンプ関連のステートを「Jumping」というサブステートマシンにまとめてあるので、ここに追加する形となります。
また、新しく「DashJump」というパラメータも作っておきます。

20160306_1

DashJumpステートにスクリプトを追加します。
OnStateEnter() と OnStateExit() にそれぞれ処理を書きます。

using UnityEngine;
using System.Collections;

namespace StateController.PlayerAnimator {

    public class DashJump : StateMachineBehaviour {

        public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
            animator.SetBool("Run", false);
            animator.gameObject.GetComponent<Player>().getCharacterMotor().movement.maxForwardSpeed = GameConstants.DASH_MOVE_SPEED;
        }

        public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
            animator.ResetTrigger("DashJump");
            animator.gameObject.GetComponent<Player>().getCharacterMotor().movement.maxForwardSpeed = GameConstants.DEFAULT_MOVE_SPEED;
        }
    }
}

ジャンプボタンを押したら即反応して欲しいので、Animator.Play()を使用します。
AnimatorController上からモーションの中断を行うのはかなり難しいです。
というか自分が挑戦してまともに動いたことはありませんorz
まだまだ理解が足りていない部分ですね。

これでモーション的にはダッシュジャンプになりましたが、移動速度が通常と同じなので「ダッシュしながらジャンプ」している意味がありません。
CharacterMotor の maxForwardSpeed を変更し、移動速度を変化させます。

まとめ

・走り中かダッシュ中にジャンプでダッシュジャンプ
・OnStateEnter() と OnStateExit() で移動速度を変更

ということで、ざっくりとダッシュジャンプを実装してみました。
こういうアクションを実装すると「アクションゲーム」っぽくなりますね!
リアリティのあるモッサリ感は不要なので、大胆に作っていきたいところです。

スポンサーリンク

down

コメントする



ツイッター