発生している問題・エラーメッセージ
これが出る
Failed to create agent because there is no valid NavMesh
補足情報(FW/ツールのバージョンなど)
unity2019.3.1f3
ここにより詳細な情報を記載してください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
姿勢の制御はNavMeshAgent
任せでしょうか?
【Unity】NavMeshComponentsに2D対応ブランチが追加されていたので試してみた - テラシュールブログの解説記事の末尾に...
NavMeshAgentはパスを3Dの物と認識しているので注意が必要です。NavMeshAgentを使用したい場合、座標だけ同期して実際の描画は別のGameObjectで行う等が楽で良いです。
との注意書きがあります。それに従ってNavMeshAgent
は補助的に使うだけにし、実際の鳥の位置・姿勢は独自に制御するのがいいかもしれません。
あるいは、NavMeshAgent
が設定した姿勢を後から書き換えてやってもいいと思います。試しに「鳥が卵を追いかける」というシチュエーションでプロジェクトを作成し、鳥のスクリプトを下記のようにしたところ...
C#
1using System.Collections; 2using UnityEngine; 3using UnityEngine.AI; 4 5[RequireComponent(typeof(NavMeshAgent))] 6public class BirdController : MonoBehaviour 7{ 8 [SerializeField] private Transform egg; 9 private NavMeshAgent agent; 10 11 private void Awake() 12 { 13 this.agent = this.GetComponent<NavMeshAgent>(); 14 } 15 16 // 「Failed to create agent because there is no valid NavMesh」のメッセージは 17 // おそらくNavMeshBuilder2Dがメッシュを作成するよりも早くNavMeshAgentが動作を 18 // 始めようとしているためではないかと思われます 19 // そこで、インスペクター上ではNavMeshAgentを無効化しておき、ちょっとタイミングを 20 // 遅らせて有効化してみてはいかがでしょうか? 21 private IEnumerator Start() 22 { 23 yield return new WaitForEndOfFrame(); 24 25 this.agent.enabled = true; 26 if (NavMesh.SamplePosition(this.transform.position, out var hit, float.MaxValue, NavMesh.AllAreas)) 27 { 28 this.agent.Warp(hit.position); 29 } 30 } 31 32 // 鳥の挙動は、さしあたりひたすら卵を目標に移動するだけとしました 33 private void Update() 34 { 35 if (this.agent.isActiveAndEnabled && (this.egg != null)) 36 { 37 this.agent.SetDestination(this.egg.position); 38 } 39 } 40 41 // 鳥の姿勢はNavMeshAgentによってコントロールされており、Z軸が前方だという 42 // 前提の姿勢になってしまうので、LateUpdateタイミングで姿勢を修正してみました 43 private void LateUpdate() 44 { 45 var forward = this.transform.forward; 46 if (forward.z < 0.5f) 47 { 48 this.transform.rotation = Quaternion.LookRotation(Vector3.forward, forward); 49 } 50 } 51}
下図のような挙動になりました。
投稿2020/04/03 08:58
総合スコア10811
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。