以下の画像のように、モデルが静止するバグに対応する
以下のスクリプトをキャラに適用する。
fps_cnt > 10の数値を弄ればより滑らかになる。
以下のスクリプトはstandard assetsのモーションを適用してる場合なので、
void Update () { fix_fall_bug(); } private //崖の端から降りようとするとキャラが動かなくなるバグを治す float before_ypt; int fps_cnt = 0; void fix_fall_bug(){ Animator m_motion = GetComponent(); AnimatorStateInfo state = m_motion.GetCurrentAnimatorStateInfo(0); if(state.IsName("Airborne")){ if(fps_cnt == 0) before_ypt = transform.position.y; fps_cnt++; //Airborneモーション中で、30フレーム経ってもy座標が0.1以下しか動いてない場合は静止バグと判断 if(fps_cnt > 10){ if(System.Math.Abs(before_ypt - transform.position.y) < 0.1){ var dir = transform.forward;//モデルの向きを取得 var leng = 0.2f; //静止バグが起きたら、モデルの向きの方向にleng分移動させる transform.position = transform.position + dir * leng; } fps_cnt = 0; } } }
ただし細い道だとこんな感じになってしまう