WisdomSoft - for your serial experiences.

範囲

3次元空間上で指定した中心点からの範囲を表す Bounds 構造体について解説します。

空間の範囲

Rect 構造体による長方形は平面の範囲でした。同様に3次元ベクトルを用いた空間の任意の中心点とサイズから、立方体の範囲を表現できます。範囲は UnityEngine.Bounds 構造体で表されます。

UnityEngine.Bounds 構造体
public struct Bounds

この構造体のコンストラクタはオーバーロードされており、範囲の中心とサイズを指定できます。

Bounds 構造体のコンストラクタ
public Bounds(Vector3 center, Vector3 size)

Vector3 型の値で、center パラメータは範囲の中心座標、size パラメータにサイズを指定します。

範囲の中心とサイズは、それぞれプロパティを通して設定または取得できます。範囲の中心は center プロパティ、サイズは size プロパティで設定または取得できます。

Bounds 構造体 center プロパティ
public Vector3 center { get; set; }
Bounds 構造体 size プロパティ
public Vector3 size { get; set; }

コンストラクタの size パラメータや size プロパティで設定される値は立方体全体の幅、高さ、奥行きを表します。各軸の大きさは中心からの半径ではなく、直径となります。範囲の中心から各軸の半径を取得したい場合は size プロパティではなく extents プロパティを使うと便利です。

Bounds 構造体 extents プロパティ
public Vector3 extents { get; set; }

このプロパティは、常に size プロパティの半分を表します。

コード1
using UnityEngine;

public class Test : MonoBehaviour
{
	void Start()
	{
		Vector3 center = Vector3.zero;
		Vector3 size = Vector3.one;
		Bounds bounds = new Bounds(center, size);
		print("bounds=" + bounds);
	}
}
実行結果
コード1 実行結果

コード1では、全ての要素が 0 のベクトルを中心、すべての要素が 1 のベクトルをサイズとする Bounds 構造体を作成しています。Bounds 構造体の文字列表現を出力すると、中心の座標と各軸の範囲が表示されます。この時の範囲は size プロパティの値ではなく extents プロパティから得られる値であることが実行結果から確認できます。