ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

Cubeでライン その2

Cubeをラインのように描画するようにした。
まずCubeを細長くするためにXとZのスケールを極端に小さくし、Yのスケールを線分の長さとする。
始点から終点へ向くようにCubeを回転させる。向きはQuaternion.FromToRotation()を使って求めた。
回転位置はオブジェクトの中心となっているので、両端が始点、終点となるように線分の半分の長さだけ移動させる。
これでCubeをラインのように描画できた。

Vector3 start; // 始点
Vector3 end; // 終点
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.GetComponent<Collider>().enabled = false; // コリジョン無効
float distance = Vector3.Distance(start, end); // 線分長さ
cube.transform.localScale = new Vector3(0.01f, distance, 0.01f);
cube.transform.position = start;
Vector3 dir = (end - start).normalized; // 始点から終点への向き
cube.transform.rotation = Quaternion.FromToRotation(Vector3.up, dir); 
cube.transform.position += dir * distance/2.0f;