スプラインとは?
スプラインは、複数の点を滑らかな曲線で結ぶ数学的な手法です。
元々は船舶設計や建築で使われていた物理的な道具(薄い木材や金属の棒)から名前が来ており、
これを複数の点に固定して自然な曲線を描いていました。 数学的には、スプラインは区間ごとに定義された多項式関数を繋げて作られる曲線で、
接続点で連続性と滑らかさを保つように設計されています。
最も一般的なのはベジェスプラインとB-スプラインです。
Splinesパッケージを導入する
Unity
では、公式にSplines
パッケージが提供されています。
UnityEditor
のメニューからWindow
→PackageManager
を選択し、PackageManager
を開きます。
左側のUnity Registry
を選択し、検索欄に「Splines
」と入力して検索します。
Splines
パッケージを選択しInstall
ボタンを押します。
しばらく待つと導入が完了します。
スプラインを作成する
Splines
パッケージを追加したことによって、
ヒエラルキーの右クリックメニューにSpline
が追加されています。
Square
などのプリセットスプラインも選択できます。
SceneView
にCreate Spline
ボタンが増えています。
これによりSceneView
上で複数の座標を指定し、スプライン曲線で結ぶことができるようになります。
ヒエラルキーにもSpline
オブジェクトが作られ、
SplineContainer
コンポーネント中で設定した座標が確認できます。
SplineContainer
と経過時間から、その時間のスプライン曲線上の座標を取得できます。
以下のようなスクリプトだと、5秒間かけてスプライン曲線上を移動する形になります。
EvaluatePosition
の引数は0〜1に正規化された値である必要があります。(0=始点、1=終点)
public class SplineTest : MonoBehaviour
{
[SerializeField] private SplineContainer _splineContainer;
private float _time = 0f;
private void Update()
{
_time += Time.deltaTime;
_time %= 5f;
var position = _splineContainer.EvaluatePosition(_time / 5f);
transform.position = position;
}
}
動かすと以下の様になります。
その他のスプラインの使い道
今回スプライン上を移動するようなサンプルを作成しました。
このようにキャラクター、カメラ、パーティクルなどの移動経路として使用できます。
他にもスプライン上に等間隔でオブジェクトを配置したり、
レースゲームのNPC
の走行ラインを指定したり、
滑らかな曲線が必要な場面で役に立つかもしれません。
今回はSplines
パッケージについて簡単に解説しました。
スプラインを活用することで、滑らかな曲線を簡単に表現できるようになります。
その曲線の上をキャラクターを移動させたり、
カメラ演出用のパスとして使用したり、使い道は沢山ありそうです。
開発中のゲームなどに活かせそうなら導入してみてください。
📣おしらせ!
Unity Asset Storeで GROW YOUR GARDEN セール が開催中です。
農業関係のアセットなどが最大50%OFFでセール中です。