前の記事でナビメッシュエージェントをワープさせるときに、ナビメッシュエージェントが消えて少し時間を開けてから出現するようにしてみます。
// Update()
// 数秒ごとに
second = 0f;
if (num < points.Count)
{
pos = points[num]; // 経路上の次の点
gameObject.SetActive(false); // キャラを非アクティブにする
Invoke("WaitAndWarp", 1f); // 1秒待ってからワープ
}
else {
}
// ---
void WaitAndWarp()
{
agent.Warp(pos); // ワープさせる
gameObject.SetActive(true); // キャラをアクティブにする
agent.path = path; // パスを設定
if (num == points.Count - 1)
{
animator.SetBool("Stay", true); // 立ち止まる
agent.isStopped = true;
}
num++;
}
数秒ごとにキャラクターを非アクティブにして、その1秒後にワープさせてアクティブに戻してパスを再設定するようにしました。これでワープの直前に少しの間姿を消します。
また、前の記事の方法でマウスクリックで目的地を設定できるようにしました。すると、タイミングよくクリックした時に、エラーがでて停止するようになりました。
このとき、曲がり角の配列の要素数が0になっていました。なので、経路上の等間隔の点を取得するときに、曲がり角が0個だと、キャラをアクティブに戻して再度経路を取得するようにするとうまくいきました。