Unity カーレースゲーム開発、勉強中 パスの表示
今日の勉強は、Unityでパスを作るコードの勉強
目的:自分以外のクルマを自動でコースに沿って動かすためのパスのプログラムの学習。
これは、自分の車を動かすためのものではなくて、いわゆるモブ車のためのプログラムの学習。この参考動画で以前作成したが、作成したプロジェクトがごちゃごちゃしすぎてわからなくなったので、再度学習する。ソースもブログに掲載する予定。なお動くかどうかはわからない。2017年6月25日
プロジェクト名:「サンプルカー」
参考サイト、動画:https://www.youtube.com/watch?v=o1XOUkYUDZU
Car AI Tutorial #1 (Unity 5 ) – Make the Path

この動画は、空のオブジェクトを複数作成し、そのオブジェクト同士をラインで結び表示させるだけのコードです。
Pathが親のオブジェクトでNode(名称はなんでも良さそう)オブジェクトが複数配置されています。
このコードは、クルマオブジェクトも、地面オブジェクトも必要ありません。
以下はPath.csのコード
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Path : MonoBehaviour { public Color lineColor; private List<Transform> nodes = new List<Transform>(); void OnDrawGizmos(){//OnDrawGizmos()常に表示する。//OnDrawGizmosSelectedでPathオブジェクトを選択すると見える Gizmos.color = lineColor; Transform[] pathTransforms = GetComponentsInChildren<Transform> (); nodes = new List<Transform> (); for (int i = 0; i < pathTransforms.Length; i++) { if (pathTransforms [i] != transform) { nodes.Add (pathTransforms [i]); } } for (int i = 0; i < nodes.Count; i++) { Vector3 currentNode = nodes [i].position; //8:49秒あたり 動画1で Vector3 previousNode = Vector3.zero; if (i > 0) { previousNode = nodes [i - 1].position; } else if (i == 0 && nodes.Count > 1) { previousNode = nodes [nodes.Count - 1].position; } Gizmos.DrawLine (previousNode, currentNode); //コードを書いたら、このPath.csをPathオブジェクトにかぶせる //colorのopacityを100%にしないとラインが見えない。 Gizmos.DrawWireSphere(currentNode,0.3f); } } }