見出し画像

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でロードマップを公開中です。
よかったら覗いてみてください。


この記事が気に入ったらサポートをしてみませんか?