iconPlayMakerを使うとよく「Vector」というワードが出てきます。これはPlayMakerで用いられる変数の型の一つで、PlayMakerを使う上で非常に重要なものです。本記事ではそのvector型の変数について、実際にどのように応用されるかを紹介します。本記事は以下の記事の続きになっています。上の記事では変数についてを基礎から説明しているので、変数を使うのが初めての方は上の記事を先に読むことをお勧めします。STYLYにアップロードする方法サンプルシーン本記事を読めばPlayMakerを使って以下のようなシーンを制作することができます。赤いCubeと動きや向きや形が連動するスケールが5倍の青いCube赤いCubeと動きや向きや形が連動するスケールが5倍の青いCube事前準備UnityのプラグインであるPlayMakerをあらかじめインストールしておきましょう。概要とインストールはじめてPlayMakerを使用するひとは、あらかじめ以下の記事を一読することで、理解を深めることができます。基本操作編Vector編VectorとはVectorとは座標や方向や角度などを値として一つだけ保持することができる変数の型で、その値はよくベクトルと呼ばれます。Unityにおいて座標や方向や角度などのさまざまな要素がX成分、Y成分、Z成分に分けて扱われます。さまざまな要素がX成分、Y成分、Z成分に分けて扱われるそれら一つ一つをfloat型の変数で管理するのは大変ですが、Vector型の変数を使えばそれらをまとめて管理することができます。Vector型の変数のイメージ図そして、PlayMakerで扱えるVectorにはVector2とVector3があります。Vector2にはX成分、Y成分を含む2次元の値を代入できます。Vector3にはX成分、Y成分、Z成分を含む3次元の値を代入できます。Vector2・Vector3のイメージ図また、Vector型の変数の初期値はすべての成分が0になっています。VectorのActionPlayMakerのvector型を使うActionの中でも特に重要なものを紹介します。基本的な使い方は同じなので、Vector3用のActionをもとに説明します。XYZこのアクションはVector3型の変数に値を代入することができます。1代入先の変数を選択できます。2代入する値をVector3型の変数で選択できます。3代入する値のX成分を入力できます。入力欄の右のイコールを押すことで値に変数を選択することもできます。4代入する値のY成分を入力できます。入力欄の右のイコールを押すことで値に変数を選択することもできます。5代入する値のZ成分を入力できます。入力欄の右のイコールを押すことで値に変数を選択することもできます。6チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。代入される値は3、4、5の値が優先され、3、4、5でNoneに設定されている箇所の値に2の値が代入されます。2にNoneが設定されている場合は、3、4、5でNoneに設定されている箇所には何も代入されません。XYZこのアクションはVector3型の変数の値をX成分、Y成分、Z成分ごとにfloat型の変数に代入できます。1代入する値をVector3型の変数で選択できます。2X成分の代入先のfloat型の変数を選択できます。3Y成分の代入先のfloat型の変数を選択できます。4Z成分の代入先のfloat型の変数を選択できます。5チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。Operatorこのアクションはベクトル同士のさまざまな計算が行えます。1計算に使われるベクトル(Vector1)を入力することができます。入力欄の右のイコールを押すことでベクトルに変数を選択することもできます。2計算に使われるベクトル(Vector2)を入力することができます。入力欄の右のイコールを押すことでベクトルに変数を選択することもできます。Product(外積)、Distance(距離)、Angle(角度)、Project(射影)、Reflect(反射)、Add(足し算)、Subtract(引き算)、Multiply(掛け算)、Divide(割り算)、Min(最小値)、Max(最大値)を選択できます。※Add(足し算)、Subtract(引き算)、Multiply(掛け算)、Divide(割り算)、Min(最小値)、Max(最大値)はX成分、Y成分、Z成分ごとに分けて計算されます。4計算の結果がVector3で返される場合での保存する先の変数(Vector3型)を選択できます。5計算の結果がFloatで返される場合での保存する先の変数(Float型)を選択できます。6チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。Reflect(反射)Vector2に垂直な平面でVector1を反射したベクトルを求めます。※Reflectを行うときは長さが1のベクトルをVector2に入力してください。Multiplyこのアクションは倍率を入力して、Vector3型の変数のベクトルの長さにその倍率をかけることができます。1変数を選択できます。2倍率を入力できますまた、入力欄の右のイコールを押すことで値に変数を選択することもできます。3チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。ベクトルの反転マイナスの倍率を設定することで、ベクトルの方向を反転させることができます。NormalizeこのアクションはVector3型の変数のベクトルの長さをおおよそ1にします。1変数を選択できます。2チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。Magnitudeこのアクションはベクトルの長さの最大値を入力して、選択したVector3型の変数のベクトルの長さが最大値より大きい場合に、そのベクトルの長さを最大値に短縮して、Vector3型の変数のベクトルの長さが最大値以下になるように揃えます。1変数を選択できます。2ベクトルの長さの最大値を入力できます。入力欄の右のイコールを押すことで値に変数を選択することもできます。3チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。Vector3このアクションは自分で設定したいくつかのベクトルからランダムに選ばれた一つのベクトルを変数に代入することができます。1ベクトルの数を入力することができて、ここに入力した数に対応して2と3の組み合わせの数が決まります。2ベクトルを入力できます。入力欄の右のイコールを押すことでベクトルに変数を選択することもできます。30~1でそのベクトルがランダムに選ばれる割合を入力できます。入力欄の右のイコールを押すことで値に変数を選択することもできます。4代入先の変数を選択できます。Lerpこのアクションは始点のベクトルと終点のベクトルを選択して、始点から終点にどれだけ近いかを0~1の値で入力することで、始点と終点を端点にもつ線分上の点のベクトルをとることができます。実際の動作1始点のベクトルを入力できます。入力欄の右のイコールを押すことでベクトルに変数を選択することもできます。2終点のベクトルを入力できます。入力欄の右のイコールを押すことでベクトルに変数を選択することもできます。3始点から終点にどれだけ近いかを0~1の値で入力できます。入力欄の右のイコールを押すことで値にFloat型の変数を選択することもできます。4ベクトルを代入する変数を選択できます。5チェックを入れると、このStateにとどまっている間に、毎フレームこのActionが実行されます。Vectorのベクトルまでの線分上を推移するベクトルをVector3型の変数に代入することができます。Outで選択できます。Outの推移の違いは以下のようになります。実際の動作Linear:最初から最後まで同じ速さでベクトルが推移します。Out:最初と最後のベクトルが推移する速さが遅くなります。2推移前のベクトルを入力できます。入力欄の右のイコールを押すことでベクトルに変数を選択することもできます。3推移後のベクトルを入力できます。入力欄の右のイコールを押すことでベクトルに変数を選択することもできます。4どのくらいの時間をかけて値を推移させるか入力できます。入力欄の右のイコールを押すことで値にFloat型の変数を選択することもできます。5ベクトルを代入する変数を選択できます。6このアクションが終わったときに発生させるイベントを選択できます。7チェックを入れると推移する時間の長さがシーン内の時の流れ(TimeScale)に影響されなくなります。Directionと同じ長さになるように伸縮させます。Directionのベクトルを入力できます。入力欄の右のイコールを押すことでベクトルに変数を選択することもできます。directionのベクトルを入力できます。入力欄の右のイコールを押すことでベクトルに変数を選択することもできます。3回転のスピードを入力できます。入力欄の右のイコールを押すことで値にFloat型の変数を選択することもできます。4ベクトルの伸縮の速度の最大値を入力できます。入力欄の右のイコールを押すことで値にFloat型の変数を選択することもできます。Vectorの応用Vector3型の変数を使うことで、int型の変数やfloat型の変数だけを使うよりも簡潔にギミックを作ることができます。今回は応用として、赤いCubeと動きや向きや形が連動するスケールが5倍の青いCubeをVector3型の変数で作って、さらにそれと同じものをVector3型の変数なしで作って比較することで、Vector3型の変数がどれだけギミックを簡潔にしてくれるかを見てみたいと思います。Cubeを二つ設置します。Cubeを二つ設置するさらに各Cubeにそれぞれ赤色のMaterial、青色のMaterialを適用します。※赤いCubeを座標(0,0,0)に置いていると、ギミックを実際に動かしたときに青いCubeと重なって見づらくなってしまうので、赤いCubeの座標を(0,0,2)ぐらいにしておくことをおすすめします。Cube」に変更しました。CubeにPlayMakerFSMを追加します。Scale」を追加します。ScaleのVectorに新しい変数としてそれぞれPosVec、ScaVecを選択します。Anglesに新しい変数としてRotVecを選択します。Frameにチェックを入れます。Multiply」を二つ追加します。Multiply」が来るようにしてください。VariableにそれぞれPosVec、ScaVecを選択します。Frameにチェックを入れます。Scale」を追加します。Scale」が来るようにしてください。Cubeを選択します。ScaleのVectorにそれぞれPosVec、ScaVecを選択します。AnglesにRotVecを選択します。Frameにチェックを入れます。Actionを編集する※Actionの順番は最終的に以下の並びになるようにしてください。Actionの順番これで赤いCubeとスケールが5倍の青いCubeの動きや向きや形が連動するギミックが完成しました。実際の動作そして、このギミックをVector3型の変数有り無しで比較した場合の画像が以下です。画像のようにVector3型の変数を使ったほうがActionや変数の数が少ないので見てわかりやすく、管理しやすいことがわかると思います。してもfloat型の変数のほうが直感的にわかりやすいので頼りがちになってしまいますが、作るギミックが複雑であればあるほどVector3型の変数を使えるかどうかが効率に大きく影響してくるので、ぜひ皆さんもVector3型の変数の活用に挑戦してみてください。終わりに本記事ではvector型の変数の基本と応用を説明しました。今回紹介したように、PlayMakerを使えばUnityで使用するプログラミング言語(C#)を学習しなくても、Unityコンテンツを簡単に作成できます。今回紹介した応用以外にも、PlayMakerで変数を使いこなせばさまざまなことを表現できるので、皆さんもぜひPlayMakerを使ったシーン制作に挑戦してみてください。STYLYにアップロードする方法3DモデルをSTYLYにアップロードしてみましょう。iconTomovectorTomoVRに興味がある大学生です。VRなどを専門的に勉強したいと思いながら、今は基礎学問にはげんでいます。リアルとバーチャルが溶け合う、次世代のクリエイターの受賞作をご覧ください。リアルとバーチャルが溶け合う、次世代のクリエイターの受賞作をご覧ください。