連休
気分はすっかりゴールデンウイークな浮かれ気分の皆さんこんにちは。今年は久しぶりに行動制限のないG.W.となりそうなので旅行やレジャー、スポーツ観戦など色々と予定を立てている方も多いと思います。私は普段通り外出予定は殆どなく大半はお家で過ごす事になりそうですが、今年は自作ゲーム「W.T.」のSteam登録作業をする予定なのでダラダラとしている時間は無いと思います。
Splineツール
一部Unity利用者界隈で話題に上がっていましたが、Unity2022からスプライン曲線を簡単に作成できるツールが利用可能となっています。
スプライン曲線とは複数の制御点を設定して、それら全ての制御点を通る滑らかな曲線を描く手法ですが、これを自力で計算しようとすると結構面倒くさく、これまではアセットを購入して曲線を作成していました。
【アセット紹介】Dreamteck Splines でスプライン曲線に沿った移動をさせる【Unity】 - Raspberlyのブログ
が、Unity2022からはSplineツールを導入することで簡単にスプライン曲線を作成することができるようになりました。
導入法
メニューのWindow > Package ManagerからPackage Managerを開いて一覧からSplinesを選択、右下のInstallボタンをクリックします。
インストールが完了するとメニューのGameObjectからSplineが選択できるようになるので、そこから Draw Splines Toolを選択します。
すると、Toolギズモにパス編集が追加され、スプラインのポイントを左クリックで配置できるようになります。
Sceneビュー内の適当な箇所を左クリックしていくと自動的に配置した点を全て通るような曲線が描画されます。
描画されたSplineはHierarchy上に「Spline」という名のGameObjectとして作成されます。
編集
作成されたSplineはSceneビューで制御点を移動させる事ができます。
また、制御点毎に曲線の種類をベジェ曲線、Catmull-Rom曲線、直線から選ぶことができます。(デフォルトはCatmull-Rom曲線)
Splineに沿ってオブジェクトを移動させる
作成したSpline曲線に沿ってオブジェクトを移動させることができます。例えば以下のようなペンギンのキャラクターを動かしたい場合
ペンギンのオブジェクトにSpline Animateコンポーネントを追加します。
Spline AnimateのSplineに作成したSplineオブジェクトを指定して、Durationの項目に移動時間を設定します。
Foward Axisの項目にオブジェクトの正面方向と同じ方向を指定しておきます。
これにより移動中のオブジェクトはスプラインの接戦の向きが必ず正面方向になるように自動で回転しながら移動することができます。
Play On Awakeの項目をチェックしておくとゲームプレイ開始と同時に移動を開始しますが、任意のタイミング開始したい場合はこの項目のチェックを外し、スクリプトから任意のタイミングでSplineAnimateクラスのPlayメソッドをコールします。(事前にUnityEngine.Splinesをusing指定する必要あり)
またSplineAnimateにはPauseメソッドも用意されているので、一時停止→再開も難なく行うことができます。
最後に
今回はSceneビュー上でDrawツールを使ってSplineの生成を行いましたが、スクリプトからSplineに制御点を追加することでSplineを生成することもできます。
Splineをスクリプトから制御する手法については以下のサイトが参考になります。