• 座標が動いちゃうアニメーションを適用しつつ動かなくする
  • Animatorにパラメータを渡す
  • Animatorウィンドウのスクロール
  • 指定フレームに設定する
  • 再生中のアニメーションのフレーム数を調べる
  • 再生中のアニメーションの種類を調べる
  • 違うモデル用のアニメーションを合わせる
  • モーションに当たり判定をつける

  • 座標が動いちゃうアニメーションを適用しつつ動かなくする

そのままアニメーションを適用すると勝手に歩いていっちゃうのを防ぐ方法。
適用したオブジェクトのAnimator→Apply Root Motionのチェックを外す。
これで移動力を持つアニメを適用しても移動しなくなる。

  • Animatorにパラメータを渡す

参考:NavmeshのAI経路探索とAnimatorのアニメーションを連動させる#Unity
animator.SetFloat("Speed", agent.velocity.sqrMagnitude);

  • Animatorウィンドウのスクロール

マウスの中ボタンドラッグ(そんなの聞いてない)

  • 指定フレームに設定する

Skeleton.GetComponent(Animator).Play("Base Layer.idle", -1, 0.0f);

  • 再生中のアニメーションのフレーム数を調べる

var Player : GameObject;
Player = GameObject.Find("Dimples").gameObject;
Debug.Log(Player.GetComponent(Animator).GetCurrentAnimatorStateInfo(0).normalizedTime);

  • 再生中のアニメーションの種類を調べる

var Player : GameObject;
Player = GameObject.Find("Dimples").gameObject;    
if(Player.GetComponent(Animator).GetCurrentAnimatorStateInfo(0).IsName("idle") == true){
            Debug.Log("idle");
}
        else if(Player.GetComponent(Animator).GetCurrentAnimatorStateInfo(0).IsName("attack1") == true){
            this.GetComponent(Rigidbody).AddForce(Vector3(0.0f, 10.0f, 0.0f), ForceMode.Impulse);
            Debug.Log("attack1");
}

  • 違うモデル用のアニメーションを合わせる

カッコイイモーションをインポートして、アニメーターに設定してもうまく動かない場合
何も考えずにモーションを設定するとズボっとはまったりする

・修正したいアニメーションをEdit

・[Rig]の[Animation Type]を[Humanoid]に変更して[Apply]

※でもなんだかおかしなモーションになってる場合もある?※

  • モーションに当たり判定をつける

・ボーンを辿って、動くボーンにコライダを付与


・Add Component →Physics→お好きなコライダー(球なり柱なり)

・こんなかんじ

この当たり判定が実際に当たったかどうかチェックするにはオブジェクト名でしたりタグでしたりできる。

オブジェクト名でチェックするパターン
function OnCollisionEnter(collision : Collision){
    if(collision.gameObject.name == "Floor"){
        Debug.Log("Hit the floor");
     }else if(collision.gameObject.name == "Wall"){
        Debug.Log("Hit the wall");
    }
}
※なんにせよコライダーと一緒にrigidbory付けとかないと判定されないので注意!!※

最終更新:2016年05月11日 09:30