すんなりできるかと思ったらはまりました。
navMeshAgentでspeed=20ぐらいにするとコーナーを曲がりきれません。
今までみたいに遅いなら普通に曲がれます。
AutoBrakingはありますがそれでも足りません。
内部的にrigidbody使ってるんですかね?
遠心力の影響を下げるならMass下げてみよう思ってもそもそもそういう値がないし。
さてどうするか?
navMeshと物理エンジンを同時に使うと競合するって記事も見たんで、試しにnavMeshAgentのspeedを0にして、自前で移動するようにしてみました。
経路パスに沿って自力でLookAtして移動。
navMeshにはゴールへのパスを見つけてもらうだけで、移動は自分でやればいいわけです。
これなら直角コーナーも猛スピードで問題なく曲がれます。
これって既出ですかね?
void Start() { LR = GetComponent<LineRenderer>(); LR.enabled = true; LR.SetWidth(0.3f, 0.3f); nowPoint = 0;// Random.Range(0, 4); agent = GetComponent<NavMeshAgent>(); agent.radius = 0.3f; agent.speed = 0.0f; GotoNextPoint(); } void Update() { if (agent.remainingDistance < 4f) GotoNextPoint(); NavMeshPath path = agent.path; //経路パスを取得 if (pt < path.corners.Length) { if (Vector3.Distance(transform.position, path.corners[pt]) < 2f) { pt++; if (pt >= path.corners.Length) GotoNextPoint(); } transform.LookAt(path.corners[pt]); transform.position += transform.forward * Time.deltaTime * 30f; } LineRender(); } void GotoNextPoint() { if (points.Length == 0) return; agent.destination = points[nowPoint].position; pt = 0; nowPoint++; if (nowPoint >= points.Length) nowPoint = 0; ; } void LineRender() { NavMeshPath path = agent.path; //経路パスを取得 LR.SetVertexCount(path.corners.Length); for (int i = 0; i < path.corners.Length; i++) { Vector3 corner = path.corners[i] ; LR.SetPosition(i, corner+Vector3.up); } }