Unity Visual Scripting 入門第5回:AddForceとTransFormを駆使したオブジェクトの基本操作

この記事はVisual Scripting 入門の第5回です。前回の記事は下記のリンクから確認できます。

今回はAddForceとTransFormを駆使したオブジェクトの基本操作の方法を解説します。

AddForceを使用して移動する

Hierarchyに空のGameObjectを追加し、[ObjectController]という名前にします。

GameObjectを[ObjectController]という名前に変更

GameObjectを[ObjectController]という名前に変更

[ObjectController]にScript Machineをアタッチします。

Newをクリックしグラフを作成します。

[ObjectController]にScript Machineをアタッチ

[ObjectController]にScript Machineをアタッチ

Sciprt MachineのNewを押してグラフを作ります。

Macrosというフォルダを作り、その中に[ObjectManager]という名前で保存します。

フォルダを作り、[ObjectManager]という名前で保存

フォルダを作り、[ObjectManager]という名前で保存

HierarchyにCubeを追加し、Positionを(0,0.5,0)に設定し、AddComponentから[Rigidbody]を追加します。

今回はこのオブジェクトを動かします。

CubeのPositionを(0,0.5,0)に設定。AddComponentから[Rigidbody]を追加

CubeのPositionを(0,0.5,0)に設定。AddComponentから[Rigidbody]を追加

RigidbodyとはUnityにおいて物理演算をしてくれる機能です。

オブジェクトに重力をつけたり、力を与えたりできます。

Rigidbody

Rigidbody

次にこのオブジェクトを置くためにHierarchyにPlaneを追加します。

Planeを追加

Planeを追加

座標を(0,0,0)に設定します。

ObjectControllerのVariableにGameObject型の変数を追加し、名前を[Cube]とし、ValueにCubeを入れます。

ObjectControllerのVariableにGameObject型の変数を追加。

ObjectControllerのVariableにGameObject型の変数を追加。

スペースキーを押したときに反応するようにノードを追加し、以下のように接続します。

ノードを接続

ノードを接続

Graph EditorにAdd Forceを追加します。

Forceの値に力を加えたい方向に入力します。

Add Forceを追加

Add Forceを追加

AddForceはオブジェクトに力を加えるノードです。

今回は上に飛ばすので(0,300,0)と入力しました。好きな数を入れてみましょう。

AddForceの上から2番目のノードは動かすオブジェクトを接続します。

Variableから[Cube]をGraph Editorに追加し、以下のようにノードを接続します。

ノードを接続

ノードを接続

実行します。

Spaceキーでジャンプ

Spaceキーでジャンプ

Spaceキーを押すとジャンプします。

TransFormを使ってオブジェクトを動かす

移動

Graph EditorにGet Position, Set Position, Vector3Literal, Addを追加します。

Get Position, Set Position, Vector3Literal, Addを追加

Get Position, Set Position, Vector3Literal, Addを追加


Vector3Literalを追加

Vector3Literalを追加

AddForceの接続を切断し、CubeからRigidbodyを削除します。

一度追加したCompornentを削除するには、右の3つ並んでいる点を押してRemove Componentを押します。

AddForceを切断し、Rigidbodyを削除

AddForceを切断し、Rigidbodyを削除

Variableからもう1つCubeをGraph Editorに追加します。Vector3Literal にはSpaceキーを押したときに移動する距離を入力します。

今回は(0,1,0)と入力します。

Get Positionはノードが接続されているオブジェクトの座標を取得することができます。

Set Positionは真ん中のポートに接続されているノードの座標に、一番下のポートに接続されている座標を代入することができます。

下のようにつなぎなおします。

ノードを接続

ノードを接続

実行してみましょう。

上に移動した

上に移動した

拡大・縮小

Graph EditorにGet Local Scale,  Set Local Scaleを追加します。

Get Local Scale,  Set Local Scaleを追加

Get Local Scale,  Set Local Scaleを追加

Get PositionとSet Positionの接続を切断します。

Vector3Literalの値を(1,1,1)に変更します。

Get Local Scaleはノードが接続されているオブジェクトのスケールを取得することができます。

Set Lacal Scaleは真ん中のポートに接続されているノードのスケールに、一番下のポートに接続されているスケールを代入することができます。

以下のように接続します。

ノードを接続

ノードを接続

実行します。スペースキーを押すたびに1メートルずつ大きくなっていきます。

スペースキーを押すたびに大きくなる

スペースキーを押すたびに大きくなる

回転

RotateをGraph Editorに追加します。

RotateをGraph Editorに追加

RotateをGraph Editorに追加

回転は計算方法がPositionやScaleとは異なるので、Rotateという別の関数が用意されています。

拡大・縮小に使ったノードを切断し、以下のように接続します。

今回は30度ずつ回転するので、Vector3の値は(30,0,0)と入力します。

Rotateは上から2番目のポートには今の角度、上から3番目のポートにはどれくらい回転するかを接続します。

ノードを接続

ノードを接続

実行します。スペースキーを押すたびに30度ずつ回転させることができました。

スペースキーを押すたびに30度ずつ回転する

スペースキーを押すたびに30度ずつ回転する

特定の角度に回転させる

Graph EditorにEuler(Euler), Set Rotationを追加します。

Euler(Euler), Set Rotationを追加

Euler(Euler), Set Rotationを追加


Set Rotationを追加

Set Rotationを追加

回転に使ったノードを切断し、以下のようにノードを接続します。Eulerの値は(0,30,0)に設定します。

Set Rotationは真ん中のポートに変更するオブジェクトを接続し、一番下にQuaternion型の変数を接続します。

ノードを接続

ノードを接続

実行します。スペースキーを押すとCubeがY軸に対して30度だけ回転しました。

ペースキーを押すとY軸に対して30度だけ回転する

ペースキーを押すとY軸に対して30度だけ回転する

今回はオブジェクトの動かし方について学びました。

第6回は当たり判定について紹介します。

次回の記事は下記のリンクから確認できます。