【Unity】Visual Scriptingで、動くプレイヤーの方向を滑らかな動きで向き続けるGameObjectの作り方

Unity

スポンサーリンク

Unity2021から標準パッケージとなった"Visual Scripting(ビジュアルスクリプティング)"(旧Bolt)を使用して、動くプレイヤー(ターゲット)の方向を滑らかにゆっくりと向き続けるGameObjectを作成するやり方です。
Quaternion.Slerpを使います。

プレイヤーとしては以下を使います。

完成動作

※大砲のようなゲームオブジェクトがターゲット(unity-chan)の方向を滑らかにゆっくりと向き続けています。

作り方

1.シーンに各オブジェクトを配置

1-1.以下のようにunity-chan(今回はこれをプレイヤー)とBase(赤いCylinder)とNozzle(青いCylinder)を設置する。Baseが親、Nozzleが子のオブジェクトとなるようにする。
※今回はNozzleがunity-chanの方を向き続けるようにする。この後のスクリプトの便宜上、Nozzleは先端がZ軸を向くようにする。
流れとしてはBaseをスクリプトでプレイヤーの方向に回転させて、子であるNozzleも回転する仕組み。

2.プレイヤー(ターゲット)の方向を滑らかにゆっくり向き続けるビジュアルスクリプトを作成

2-1.Baseオブジェクトに"Script Machine"コンポーネントを追加

2-2.以下のような変数を作成

2-3.作成した変数のValueに以下のように値を入れる。
Target変数にはunitychanをアタッチ(方向を見続けさせるターゲットをアタッチ)

2-4."Graph"プロパティの"New"ボタンを押下

2-5.ファイルの保存ダイアログが開かれるので任意の場所にSlerpという名前で保存する。

2-6."Edit Graph"ボタンを押下して、以下のようにグラフを作成する。

<補足>
以下のSlerpユニットのTの値(0から1)は小さいほどゆっくりとターゲットの方向に動く。

※もしBase(Nozzle)オブジェクトが上下方向の回転はしてほしくない場合は、以下のようにMultiplyでYに0を掛ければよい。(もっといい方法あるかも)

完成

これでゲームをスタートするとNozzle(Base)オブジェクトがターゲット(unity-chan)の方向を滑らかにゆっくり見続ける。

Unity

Posted by ton