表示テーマ
Spline Component
制御点を結んだ曲線です。Particleの経路や位置・接線のサンプリングに使います。
設定する手順
- 制御点を追加し、位置・接線と閉じる設定を編集します。
- SceneViewまたはGameViewで結果を確認します。
- 編集中のSceneまたはPrefabを保存します。
項目の説明
複雑な設定は下記の専用APIとInspectorの編集欄を使用します。
Inspectorの設定と使い方
「Editor / C#」は両方から変更できる設定、「Editorのみ」は公開C# APIのない編集操作です。「Editor表示のみ」は計算結果や統計などの確認欄です。「C#のみ」は、このInspectorに編集欄のない操作です。
| 設定・操作 | 編集場所 | C#の入口 | 意味・使い方 |
|---|---|---|---|
| 閉じた曲線 | Editor / C# | closed | 最後の制御点から先頭へ戻る経路にします。周回する巡回ルートやParticleの循環移動に使います。 |
| 制御点・追加・削除 | Editor / C# | pointCount / GetPoint / SetPoint | 各点の位置、入る接線、出る接線で曲がり方を決めます。位置と接線はSplineのローカル値です。C#ではpointCountを確保してから、範囲内の点をSetPointで変更します。 |
| 距離から位置を取得 | C#のみ | EvaluateDistance / tolerance | 経路上を進んだ距離からWorld位置と接線を得ます。速度×経過秒を距離へ加えると、移動する足場や巡回する物体へ応用できます。toleranceは曲線の距離計算精度の設定です。 |
初期値はEngineのComponent定義時の値で、C++表記を含みます。C#へ貼り付ける実行例ではありません。既存Sceneの保存値や既定Assetがある場合はそちらが優先されます。数値の編集範囲はInspectorで制限される場合があります。
C#から使う
操作型はSplineです。 GameObjectから取得する基本操作はGameObjectの操作を参照してください。以下には基本プロパティだけでなく、公開関数・追加の設定API・継承した共通操作も掲載します。
実用例:経路に沿って物体を動かす
Splineの制御点をEditorで用意し、移動する物体のpathObjectへSplineのGameObjectを設定します。
cs
using NEMEngine;
public sealed class SplinePatrol : MonoBehaviour {
[SerializeField] private GameObject? pathObject;
[SerializeField, Min(0.0f)] private float speed = 2.0f;
private Spline? path;
private float distance;
void Start() {
// 経路を持つ別のGameObjectからSplineを取得
if (pathObject != null) path = pathObject.GetComponent<Spline>();
}
void Update() {
// 移動距離で曲線を評価し、World位置へ反映
if (path == null || path.pointCount < 2) return;
distance += speed * Time.deltaTime;
transform.position = path.EvaluateDistance(distance, loop: true).position;
}
}設定用・関連するC#型
Spline
| 宣言・詳説 | 種類・操作 | 役割 |
|---|---|---|
public SplineSample EvaluateDistance(float distance, bool loop = true) | 関数 | Splineの開始からの距離に対する位置と接線を取得します。 |
public static Spline FromEntity(GameObject gameObject) | 関数 | 既にComponentを持つGameObjectから操作用の参照を作ります。Componentを追加する操作ではありません。 |
public SplineControlPoint GetPoint(int index) | 関数 | 指定番号のSpline制御点を取得します。 |
public void SetPoint(int index, SplineControlPoint point) | 関数 | 指定番号のSpline制御点を変更します。 |
public bool closed | プロパティ(読取・変更) | Splineの末尾と先頭をつなぎます。 |
public static int componentTypeID | プロパティ(読取専用) | 組み込みComponentの接続識別子です。通常のゲームコードではGetComponentで取得します。 |
public int pointCount | プロパティ(読取・変更) | Splineの制御点数です。 |
public float tolerance | プロパティ(読取・変更) | Spline距離の近似計算の許容差です。 |
継承する共通操作:Component
継承する共通操作:Object
使用時の注意
ParticleのSplineMovementでこのGameObjectを参照します。Transformを動かすと経路の配置も変わります。
Play中の変更は実行用Worldへ反映します。Scene編集のUndoと実行中の値の変更は別です。保存方法は編集と実行時変更を参照してください。