![見出し画像](https://assets.st-note.com/production/uploads/images/70221704/rectangle_large_type_2_56cc75f0b61e11bed17ff2f76fb340e5.jpeg?width=1200)
UE5から始める C++ & BP 06 【Blueprint版】 四則演算(+ - x ÷)
noteのWebエディタで書いていたのですが、今回からVSCodeを使用してMarkdownで書いています。
それにしても、Markdownで書くとすごい早いです。
校正ツールもローカルでできるようになったので、間違った文章が少なくなりました。
1日記事を書くのをストップして、現状の執筆スピードについて考えて良かったです。
まだまだ早くなれる!
Markdownで記事が書けるようになった
— ポジTA (@posita33) January 18, 2022
リポジトリにPushしたら公開できる
コピペでクリップボードの画像をファイル化してパスが通った文も書いてくれる
VSCodeのZenn Editor拡張でプレビューしながら書ける
調べてカスタマイズしたら圧倒的に早い
時には遠回りも悪くない pic.twitter.com/KGrLiiviiB
前回は「Construction ScriptでComponentの設定を変更する」方法について調査しました。
今回は「四則演算(+ - x ÷)」方法について調査していきます。
【Blueprint版】四則演算(+ - x ÷)
「四則演算」という難しい名前を使用しましたが、「足し算」「引き算」「掛け算」「割り算」のことです。
UE5から四則演算のノードの使用方法が変わります。
よく使用するノードなので、このタイミングで覚えてしまいましょう。
今回出来ること
Blueprintで四則演算ノードを使用して、PrintStringで計算結果を出力します。
プログラミングをする際に覚えておくと役に立つのが、英語にした時の動詞とプログラミング記号です。
ノードを追加する時や、コードを見るときに役に立ちます。
![](https://assets.st-note.com/img/1642813001641-WckpFOYMLE.png)
学習用の新規レベル「Chapter_2_7_Calculation」を作成する
学習用の新規レベルを作成します。
[File]から[New Level…]を選択します。
![](https://assets.st-note.com/img/1642540238733-LuPNGrosVD.png)
[Default]を選択します。
![](https://assets.st-note.com/img/1642540256178-te3scTpqhn.png)
「Maps」フォルダに「Chapter_2_7_Calculation」を入力し、[Save]ボタンをクリックします。
![](https://assets.st-note.com/img/1642545398901-C9j5WL4UM1.png?width=1200)
計算に使用する変数を追加する
「BP_SampleActor」をBlueprint Editorで開きます。
![](https://assets.st-note.com/img/1642540329013-9N8o7Gj1Hv.png)
四則演算ノードの計算で使用する変数を追加します。
今回はFloatとInegerの違いを説明するために、VariableTypeをInteger(整数)に設定します。
![](https://assets.st-note.com/img/1642540343643-KajEh9C0SL.png)
![](https://assets.st-note.com/img/1642540349468-4Nf3yZkppE.png)
四則演算ノードの追加手順
CalcVarA + CalcVarBの結果をPrintStringで出力します。
![](https://assets.st-note.com/img/1642540374053-ZaeFmekHdf.png)
変数[CalcVarA],[CalcVarB]のGetノードを追加し、PrintStringノードを追加します。
![](https://assets.st-note.com/img/1642540364049-gwW3oIFCrK.png?width=1200)
変数[CalcVarA]のGetノードからDrag&Dropし、[+(プラス)]で検索します。
メニューから[Add]を選択します。
![](https://assets.st-note.com/img/1642540388593-TvZJTt3Aon.png)
[PrintString]ノードの[In String]が[Add]ノードのOutputピンになるように接続します。
[PrintString]ノードの[Duratin]は変数[Duration]のGetノードを追加して接続します。
[PrintString]ノードの[TextColor]は赤を設定します。
[PrintString]ノード同士を実行ピンで接続します。
![](https://assets.st-note.com/img/1642540398678-DsFLRMkaMQ.png?width=1200)
[Compile]ボタンをクリックします。
![](https://assets.st-note.com/img/1642540407135-JUgSnCdO1y.png)
Level Editorに戻り、Viewportに「BP_SampleActor」をDrag&Dropします。
![](https://assets.st-note.com/img/1642540415391-fiOL59u4st.png?width=1200)
[Play]ボタンをクリックします。
![](https://assets.st-note.com/img/1642540425036-QUKpXxbcmF.png)
赤い文字列がAddノードの計算結果です。
![](https://assets.st-note.com/img/1642540437257-VMOy0OxHOb.png)
足し算の計算結果が正しく行われています。
![](https://assets.st-note.com/img/1642545562851-9ZEtYuQp8L.png)
その他の四則演算ノードの追加
その他の四則演算「引き算(-)」「掛け算(×)」「割り算(÷)」の結果をPrintStringで出力します。
![](https://assets.st-note.com/img/1642540473653-YWzyE3TiuQ.png)
「BP_SampleActor」をBlueprint Editorで開きます。
![](https://assets.st-note.com/img/1642540482015-CJemIfEuD1.png)
足し算の処理を範囲選択して、Copy&Pasteします。
[Add]ノードを削除します。
![](https://assets.st-note.com/img/1642540489126-GaaMt88cjx.png?width=1200)
[Subtract(引き算)]ノードを追加します。
CalcVarAからDrag&Dropし、[-(マイナス)]で検索します。
メニューから[Subtract]を選択します。
![](https://assets.st-note.com/img/1642540502379-lsjUeS4ENt.png)
[Subtract(引き算)]ノードのOutputピンを[PrintString]ノードの[InString]ピンに接続します。
[PrintString]ノードの[TextColor]ピンには「黄色」を設定します。
![](https://assets.st-note.com/img/1642540511179-DTjYj0cFky.png?width=1200)
[Multiply(掛け算)]ノードを追加します。
[Subtract(引き算)]ノードを追加手順と同様に範囲選択してCopy&Pasteし、四則演算ノードを削除します。
CalcVarAからDrag&Dropし、[*(アスタリスク)]で検索します。プログラミング言語の掛け算は[*(アスタリスク)]を使用します。
メニューから[Multiply]を選択します。
![](https://assets.st-note.com/img/1642540525478-juQSA7t8Qe.png)
[Multiply(掛け算)]ノードのOutputピンを[PrintString]ノードの[InString]ピンに接続します。
[PrintString]ノードの[TextColor]ピンには「緑」を設定します。
![](https://assets.st-note.com/img/1642540533350-Jy6rSeEXsx.png?width=1200)
[Divide(割り算)]ノードを追加します。
[Subtract(引き算)]ノードを追加手順と同様に範囲選択してCopy&Pasteし、四則演算ノードを削除します。
CalcVarAからDrag&Dropし、[/(スラッシュ)]で検索します。プログラミング言語の割り算は[/(スラッシュ)]を使用します。
メニューから[Divide]を選択します。
![](https://assets.st-note.com/img/1642540541819-2bZRpnSAHx.png)
[Divide(割り算)]ノードのOutputピンを[PrintString]ノードの[InString]ピンに接続します。
[PrintString]ノードの[TextColor]ピンには「水色」を設定します。
![](https://assets.st-note.com/img/1642540549593-dN87AinCzY.png?width=1200)
四則演算ノード「足し算(+)」「引き算(-)」「掛け算(×)」「割り算(÷)」をPrintStringで出力するBlueprintです。
![](https://assets.st-note.com/img/1642540563019-ltvZGd8T0p.png?width=1200)
[Compile]ボタンをクリックします。
![](https://assets.st-note.com/img/1642540573133-MueHuUsQhx.png)
[Play]ボタンをクリックします。
![](https://assets.st-note.com/img/1642540580973-2hlLMFRiRY.png)
四則演算ノードのそれぞれの結果は合っています。
しかし、割り算の小数点が切り捨てられてしまいました。
割り算の結果を小数点まで表示するように修正します。
![](https://assets.st-note.com/img/1642540588815-DKB9onfN5x.png?width=1200)
割り算の結果に小数点も表示する
割り算の結果を小数点まで表示されなかったのは、VariableType(整数の型)に問題があります。
[Divide(割り算)]ノードのOutputピンのVariableType(整数の型)はIntegerです。
![](https://assets.st-note.com/img/1642540636814-pNrNosSVil.png?width=1200)
[Divide(割り算)]ノードのOutputピンをIntegerからFloatに変更します。
この昨日はUE5から実装される予定の機能です。
UE4では型ごとに四則演算ノードが用意されていました。
UE5からはピンの型を変更することが出来ます。
[Divide]ノードのOutputピンを右クリックし、「Convert Pin... > Float」と選択します。
![](https://assets.st-note.com/img/1642540611474-EI69MUQmZN.png?width=1200)
[Divide(割り算)]ノードのOutputピンから再び、[PrintString]ノードの[InString]ピンに接続します。
[Integer]から[String]に変換するノードは使用しないので削除します。
![](https://assets.st-note.com/img/1642540652299-MkCwslGs6d.png?width=1200)
[Compile]ボタンをクリックします。
![](https://assets.st-note.com/img/1642540658837-GGa0DYlw1d.png)
[Play]ボタンをクリックします。
![](https://assets.st-note.com/img/1642540665639-wUdSQ6qqv3.png)
出力された文字列を確認すると、小数点まで表示されています。
数値を扱うときはVariableType(変数の型)を意識しないと、意図しない数値になってしまいます。
1個、2個と数えられる数値は「Integer」
1メートル10センチ10ミリみたいな単位の数値は「Float」
何を変数に設定するかでVariableTypeに気を付けましょう。
![](https://assets.st-note.com/img/1642540678894-LL0s3SNoWY.png?width=1200)
MathExpressionノードで数式を書く
数学に詳しく、数式で書きたい人用に、[MathExpression]ノードが用意されています。
EventGraphを右クリックし、メニューから[Add Math Expression]を選択します。
![](https://assets.st-note.com/img/1642540689999-B5dm9JbPsF.png?width=1200)
[Math Expression]ノードを選択し、[Expression]プロパティのテキストボックスに[(A + B)]という足し算の数式を書きます。
![](https://assets.st-note.com/img/1642540704232-kzCMRXW3pm.png?width=1200)
数式内のA,Bという文字列はInputピンに変換されます。
![](https://assets.st-note.com/img/1642540713446-9DsnB7fONB.png?width=1200)
PrintStringノードでOutputピンの値を出力するように処理を修正します。
![](https://assets.st-note.com/img/1642540735873-BCeDXAM6gV.png?width=1200)
[Compile]ボタンをクリックします。
![](https://assets.st-note.com/img/1642540753693-oGXfyI2rhN.png)
[Play]ボタンをクリックします。
![](https://assets.st-note.com/img/1642540757812-XeVnUiq8rY.png)
[MathExpression]ノードのOutputピンの数値が出力されました。
![](https://assets.st-note.com/img/1642540763617-GehoSOIOWk.png?width=1200)
[MathExpression]ノードをダブルクリックすると、文字列からノードが作られています。
すごい機能ですね。
![](https://assets.st-note.com/img/1642540769060-pCcc1tLO9S.png?width=1200)
使えない数式もありますので、使用する際には公式ドキュメントをご確認ください。
まとめ
noteとZenn両方で確認しているのですが、
noteの行間がキレイですね。
Zennの方は見出しが目次かして、サイドバーに付くので見やすいです。
どう管理するかまだ決めかねていますが、使いやすく見やすいように修正します。
次はC++側になります。
UE4から始めるC++&Blueprint 進捗とロードマップ
Zennで進捗報告を行い、GitHubでロードマップを公開中です。
よかったら覗いてみてください。