落書きノート

ふと自分が気になった事を書いてます

お試し版のファイティングユニティちゃんを使う

お試し版のファイティングユニティちゃんを、そのままゲームで使う。といっても、とりあえずハイキックを出せるようにするだけ。

ソースコードは以下のようになる。

...省略...

static int hikickState = Animator.StringToHash("Base Layer.HiKick");

...省略...

void FixedUpdate(){

    ...省略...
    
    if (Input.GetButtonDown ("HiKick")) {
        if(!anim.IsInTransition(0)){
            anim.SetBool ("HiKick", true);
        }
    }
    
    ...省略...
    
    if (currentBaseState.nameHash == locoState) {
        if (useCurves) {
            resetCollider ();
        }
    }
    
    ...省略...
    
    else if (currentBaseState.nameHash == hikickState) {
        if (!anim.IsInTransition(0)) {
            anim.SetBool("HiKick", false);
        }
    }
}

最初に断っておくが、バージョンの新しいMonodevelop-Unityでは、nameHashプロパティのコード補完がなぜか出てこないため、コード補完を無視してコーディングしてある。アセットのデフォルトの設定に合わせている。

GetButtonDownの引数にHiKickを指定しているが、これはInput Managerを使っている。Input Managerの設定方法は、Edit->Project Settings->Inputと辿れば、なんとなく設定方法が分かるはずだと思う。

anim.SetBoolで、Bool変数のHiKickをtrueにして、アニメーションを実行したり、falseにして、アニメーションを停止させたりしている。念の為にanim.IsInTransitionで、ステート遷移中は、中身を実行しないとしている。この辺は好みかな?

Bool変数の設定は、Animatorウィンドウで設定出来る。Transitionを作成して、変数を設定すれば良い。

言うまでもないが、Animatorウィンドウでアニメーションの設定(状態遷移)をしておかないと、ここで書いてることは使えないので、注意。検索エンジンで調べればすぐに出てくると思う。他サイトの方が丁寧で分かりやすいだろう。後、ファイティングユニティちゃんのお試しアセットと、公式のユニティちゃん一式をアセットストアからインポートしておかないと使えない。

アニメーション時にサウンドエフェクトを流したいならば、State Machine Behaviourを使う必要がある。例えば、HiKickというステートで、Add Behaviourを選択し、スクリプトを作成すると、StateMachineBehaviour専用のスクリプトが作成出来る。これにスクリプトを追加すれば出来る。スクリプト内容は他サイトを参考にしたので、以下のリンクで確認できる。音素材も載っている。 http://kikikiroku.session.jp/unity5-mecanim-animation-study/

上記のリンクでは、大体の事が載ってるからここだけで事足りるかもしれないけども(笑)。

新しいコーディング方法でやりたいよという人は下記のリンクが参考になるかもしれない。 http://riberunn50.blog.fc2.com/blog-entry-154.html