UE5から始める C++ & BP 06 【Blueprint版】 四則演算(+ - x ÷)
noteのWebエディタで書いていたのですが、今回からVSCodeを使用してMarkdownで書いています。
それにしても、Markdownで書くとすごい早いです。
校正ツールもローカルでできるようになったので、間違った文章が少なくなりました。
1日記事を書くのをストップして、現状の執筆スピードについて考えて良かったです。
まだまだ早くなれる!
前回は「Construction ScriptでComponentの設定を変更する」方法について調査しました。
今回は「四則演算(+ - x ÷)」方法について調査していきます。
【Blueprint版】四則演算(+ - x ÷)
「四則演算」という難しい名前を使用しましたが、「足し算」「引き算」「掛け算」「割り算」のことです。
UE5から四則演算のノードの使用方法が変わります。
よく使用するノードなので、このタイミングで覚えてしまいましょう。
今回出来ること
Blueprintで四則演算ノードを使用して、PrintStringで計算結果を出力します。
プログラミングをする際に覚えておくと役に立つのが、英語にした時の動詞とプログラミング記号です。
ノードを追加する時や、コードを見るときに役に立ちます。
学習用の新規レベル「Chapter_2_7_Calculation」を作成する
学習用の新規レベルを作成します。
[File]から[New Level…]を選択します。
[Default]を選択します。
「Maps」フォルダに「Chapter_2_7_Calculation」を入力し、[Save]ボタンをクリックします。
計算に使用する変数を追加する
「BP_SampleActor」をBlueprint Editorで開きます。
四則演算ノードの計算で使用する変数を追加します。
今回はFloatとInegerの違いを説明するために、VariableTypeをInteger(整数)に設定します。
四則演算ノードの追加手順
CalcVarA + CalcVarBの結果をPrintStringで出力します。
変数[CalcVarA],[CalcVarB]のGetノードを追加し、PrintStringノードを追加します。
変数[CalcVarA]のGetノードからDrag&Dropし、[+(プラス)]で検索します。
メニューから[Add]を選択します。
[PrintString]ノードの[In String]が[Add]ノードのOutputピンになるように接続します。
[PrintString]ノードの[Duratin]は変数[Duration]のGetノードを追加して接続します。
[PrintString]ノードの[TextColor]は赤を設定します。
[PrintString]ノード同士を実行ピンで接続します。
[Compile]ボタンをクリックします。
Level Editorに戻り、Viewportに「BP_SampleActor」をDrag&Dropします。
[Play]ボタンをクリックします。
赤い文字列がAddノードの計算結果です。
足し算の計算結果が正しく行われています。
その他の四則演算ノードの追加
その他の四則演算「引き算(-)」「掛け算(×)」「割り算(÷)」の結果をPrintStringで出力します。
「BP_SampleActor」をBlueprint Editorで開きます。
足し算の処理を範囲選択して、Copy&Pasteします。
[Add]ノードを削除します。
[Subtract(引き算)]ノードを追加します。
CalcVarAからDrag&Dropし、[-(マイナス)]で検索します。
メニューから[Subtract]を選択します。
[Subtract(引き算)]ノードのOutputピンを[PrintString]ノードの[InString]ピンに接続します。
[PrintString]ノードの[TextColor]ピンには「黄色」を設定します。
[Multiply(掛け算)]ノードを追加します。
[Subtract(引き算)]ノードを追加手順と同様に範囲選択してCopy&Pasteし、四則演算ノードを削除します。
CalcVarAからDrag&Dropし、[*(アスタリスク)]で検索します。プログラミング言語の掛け算は[*(アスタリスク)]を使用します。
メニューから[Multiply]を選択します。
[Multiply(掛け算)]ノードのOutputピンを[PrintString]ノードの[InString]ピンに接続します。
[PrintString]ノードの[TextColor]ピンには「緑」を設定します。
[Divide(割り算)]ノードを追加します。
[Subtract(引き算)]ノードを追加手順と同様に範囲選択してCopy&Pasteし、四則演算ノードを削除します。
CalcVarAからDrag&Dropし、[/(スラッシュ)]で検索します。プログラミング言語の割り算は[/(スラッシュ)]を使用します。
メニューから[Divide]を選択します。
[Divide(割り算)]ノードのOutputピンを[PrintString]ノードの[InString]ピンに接続します。
[PrintString]ノードの[TextColor]ピンには「水色」を設定します。
四則演算ノード「足し算(+)」「引き算(-)」「掛け算(×)」「割り算(÷)」をPrintStringで出力するBlueprintです。
[Compile]ボタンをクリックします。
[Play]ボタンをクリックします。
四則演算ノードのそれぞれの結果は合っています。
しかし、割り算の小数点が切り捨てられてしまいました。
割り算の結果を小数点まで表示するように修正します。
割り算の結果に小数点も表示する
割り算の結果を小数点まで表示されなかったのは、VariableType(整数の型)に問題があります。
[Divide(割り算)]ノードのOutputピンのVariableType(整数の型)はIntegerです。
[Divide(割り算)]ノードのOutputピンをIntegerからFloatに変更します。
この昨日はUE5から実装される予定の機能です。
UE4では型ごとに四則演算ノードが用意されていました。
UE5からはピンの型を変更することが出来ます。
[Divide]ノードのOutputピンを右クリックし、「Convert Pin... > Float」と選択します。
[Divide(割り算)]ノードのOutputピンから再び、[PrintString]ノードの[InString]ピンに接続します。
[Integer]から[String]に変換するノードは使用しないので削除します。
[Compile]ボタンをクリックします。
[Play]ボタンをクリックします。
出力された文字列を確認すると、小数点まで表示されています。
数値を扱うときはVariableType(変数の型)を意識しないと、意図しない数値になってしまいます。
1個、2個と数えられる数値は「Integer」
1メートル10センチ10ミリみたいな単位の数値は「Float」
何を変数に設定するかでVariableTypeに気を付けましょう。
MathExpressionノードで数式を書く
数学に詳しく、数式で書きたい人用に、[MathExpression]ノードが用意されています。
EventGraphを右クリックし、メニューから[Add Math Expression]を選択します。
[Math Expression]ノードを選択し、[Expression]プロパティのテキストボックスに[(A + B)]という足し算の数式を書きます。
数式内のA,Bという文字列はInputピンに変換されます。
PrintStringノードでOutputピンの値を出力するように処理を修正します。
[Compile]ボタンをクリックします。
[Play]ボタンをクリックします。
[MathExpression]ノードのOutputピンの数値が出力されました。
[MathExpression]ノードをダブルクリックすると、文字列からノードが作られています。
すごい機能ですね。
使えない数式もありますので、使用する際には公式ドキュメントをご確認ください。
まとめ
noteとZenn両方で確認しているのですが、
noteの行間がキレイですね。
Zennの方は見出しが目次かして、サイドバーに付くので見やすいです。
どう管理するかまだ決めかねていますが、使いやすく見やすいように修正します。
次はC++側になります。
UE4から始めるC++&Blueprint 進捗とロードマップ
Zennで進捗報告を行い、GitHubでロードマップを公開中です。
よかったら覗いてみてください。
この記事が気に入ったらサポートをしてみませんか?