21.Float型の変数とは?
https://scrapbox.io/files/65b58bcd5bcda6002433501a.jpg
Float型では「小数点を含む数値のデータ」を扱います。例えば「3.152」「-425.6356」「50.0」とかの小数点含む数値の事になります。つまり小数のデータを扱うのがFloat型です。ちなみにここで言う小数とは、単に小さい数という意味ではなく小数点含む数値の事になります。なので「104363.436」などの数値も小数になります。
他ページで扱ったInteger型の整数データを扱う変数とかなり似ていますが、違いは整数の数値か、小数点を含む数値かの違いだけです。基本的に整数で良い場合はIntegerを使用して、小数点以下を含む数値の場合はFloatを使用していくといった形になります。どちらの変数を使用しても良い場合もあります。
最終的にFloat型の変数を使用して、アクタの移動スピードを徐々に加速させていく機能を作っていきます。
🌟 Step1:Float型の変数を作成してみよう
まずはコンテンツブラウザで右クリック > ブループリントクラス > Actorを選択します。作成したブループリントクラスの名前を「BP_MovingSphere」にします。
https://scrapbox.io/files/65b58cdb4cb9f00025be34fa.jpg
BP_MovingSphereを開きます。マイブループリントウィンドウの変数のプラスボタンを押して変数を追加します。名前を「Speed」にして型をFloatにします。
https://scrapbox.io/files/65b58cfb7867d10024836335.jpg
コンパイルして、Speedの変数を選択した状態で詳細からデフォルト値を確認してみましょう。デフォルト値は「0.0」と小数点を含む数値になっている事を確認します。
https://scrapbox.io/files/65b58d3caa3bdd0026c5aa68.jpg
Float型の数値について
Float型に入力できる数値は必ず小数点が含まれなければなりません。なので下のように「3」と入力しても自動で「3.0」と小数点が含まれた数値に変更されます。
Float型では強制的に小数点が含まれる数値になります。
https://scrapbox.io/files/65b58d6a82e7680024d8d435.gif
追加から球(Sphere)コンポーネントを選択し、追加します。
https://scrapbox.io/files/65b58e1b27444400234db7f0.jpg
🌟Step2:アクタを移動させて移動スピードを変更してみよう
イベントTickを新規作成し、SpeedのSetノードを追加します。その後SpeedをGetで追加します。
https://scrapbox.io/files/65b58e94aa3bdd0026c5b132.jpg
ノードの名称について紹介
ここで一旦ノードのピンの名称について紹介します。
https://scrapbox.io/files/65b58ed9dcf0a60024c2505c.jpg
上の白い矢印が実行ピンで、処理の流れを決める実行ワイヤーを繋げる場所になります。そして左下の何らかのデータを入力できるピンが入力ピン、右下の何らかのデータを出力できるのが出力ピンと言います。ちなみに入力ピン,出力ピンを総称してデータピンと呼んで、データピンに繋げるワイヤーをデータワイヤーと言います。
GetSpeedノードから「+」と検索して加算する(plus)ノードを追加します。下の入力ピンを「0.1」にしてセットノードに繋げます。
https://scrapbox.io/files/65b58f2353b5b000253feb3a.gif
イベントtickは毎フレーム繋げたノードを実行するノードです。加算ノードは足し算を行うノードで、右の出力ピンから足し算の結果を出力する事ができます。そして毎フレームSpeedに0.1を足してセットするという処理を組みました。
https://scrapbox.io/files/65b58f61479b1c00231ba904.jpg
最初のフレームではSpeedのデフォルト値「0.0」なので0.1が足されて0.1がSpeedにセットされます。次にフレームではSpeedは「0.1」なので0.1が足されて0.2がセットされます。このようにSpeedが0.1ずつ加算されてSpeedの値が変化していくノードになりました。
数値の確認のためセットノードからPrintStringノードを追加して繋げます。
https://scrapbox.io/files/65b5913fa33f900027bfe42e.jpg
それでは、アクタを移動するノードを追加していきます。
AddActorLocalOffsetノードを追加します。
Add ActorLocalOffsetノードのDeltaLocationを右クリック > 構造体ピンを分割します。
https://scrapbox.io/files/65b59091dab4b5002580874f.gif
構造体ピンの分割とは?再度確認しよう
構造体ピンの分割でまとまった入力ピンを分割して表示する事ができます。DeltaLocationは最初はTransform型という三つの小数点含む数値の集まりのデータだった訳ですが、分割する事でFloat型の小数点含む数値の単体データになります。これでXYZ軸それぞれ入力できるようになり、Float型の変数を繋げる事もできるようになります。
SpeedをGetで追加して、DeltaLocationのYに繋げます。
https://scrapbox.io/files/65b590f8e9737f0026513512.jpg
コンパイルして試してみましょう。プレイします。アクタが加速して移動するようになりました。
左上のPrintStringで表示したテキストを確認してみると、0.1ずつ増えて表示されているのが確認できます。
https://scrapbox.io/files/65b591b2dfbbb600255bb840.jpg
🌟徐々にスピードが加速していくノードのまとめ
https://scrapbox.io/files/65b591d043f296002d54f6bf.jpg
まずTickノードなので毎フレーム(ゲーム中常に)このノードは実行されます。まずSpeedに0.1が足されてSpeedにセットされます。つまり最初のフレームではSpeedは0.0なので0.0 + 0.1 = 0.1となり0.1がSpeedにセットされます。AddActorLocalOffsetノードでアクタのY軸にそのSpeedが加算されて移動するといった仕組みになっています。UnrealEngineでは位置の単位はcmなので、1フレーム目にはアクタは0.1cm進んで、2フレーム目にはアクタは0.2cm、3フレーム目には0.3cm進みます。といった感じに徐々にアクタのスピードは増えていき、アクタの移動量が増えていきます。
🌟Step3:変数の中身のデータをレベルエディタから確認する方法
変数の中身のデータをPrintStringノードを使わずに確認する方法を紹介します。これも覚えておいた方が良いでしょう。今回作ったノードを例に紹介していきます。
①今回作成したブループリントクラス「BP_MovingSphere」を開きます。作成した変数Speedの横の目のアイコンをクリックして開いた状態にします。
https://scrapbox.io/files/65b5927f3659c80024124591.gif
この目のアイコンの意味は?
この目のアイコンはレベルエディタで表示されるかどうかの状態を切り替える事ができます。デフォルトでは目は閉じているので変数はレベルエディタで表示されない状態になっています。レベルエディタでの確認方法は下で紹介します。
https://scrapbox.io/files/65b592c45bcda60024336346.jpg
目を開いた状態にしたら、レベルエディタを開いてゲームをプレイして一度停止ボタンを押します。その後エディタ操作を可能にする上向きの矢印のボタンを押します。そしたらゲームプレイ中にアクタを選択できる状態になるのでBP_MovingSphereをクリックして選択します。
https://scrapbox.io/files/65b5948fe29a850024225809.gif
BP_MovingSphereを選択したそのままの状態で詳細からデフォルトの項目を確認してみましょう。Speedという変数が表示されており、中身のデータも表示されていて確認する事ができます。
https://scrapbox.io/files/65b59423c82bc00024055fd2.jpg
Speedが変化していくのが確認できます。
https://scrapbox.io/files/65b594694cb9f00025be4e9f.gif
変数の中身のデータはPrintStringで確認する?それともレベルエディタの詳細から確認するべき?
目のアイコンを利用する方法はアクタを選択したりするのが少し面倒なので、私の場合はPrintStringで変数の中身を確認する事が大半です。なおPrintStringは実際のゲーム上では表示されないように設定できるのでどんどん使ってもらって構わないです。ただPrintStringで確認する必要が無くなったものに関しては削除しても良いでしょう。
🌟実践演習
アクタを徐々に小さくしていくブループリントクラスを作成してみましょう。
・ブループリントの名前は、『BP_ScalingSphere』とします。
・追加ボタンから、『球』を追加します。
・「ScaleFactor」という名前のVector型変数を追加します。デフォルト値は10とします。
・大きさを変更するには、『Set Actor Scale 3D』ノードを使用します。
上級者向け:
サイズが0になったら、DestroyActorを使用して破壊しましょう。