FC2ブログ

凛(kagring)のUE4とUnityとQt勉強中ブログ

2016 年から UE4 を触り始めました。勉強したもののメモ用のブログです。C++ での Qt、Unity も少しあります。

| PAGE-SELECT | NEXT

≫ EDIT

UE4 浮動少数値の端数部分のみを取得する(Fraction)

浮動少数値の端数部分のみを取得する方法です。

参考サイトはこちら。

・Math 表現式
https://docs.unrealengine.com/ja/Engine/Rendering/Materials/ExpressionReference/Math/index.html
※「Frac」という項目のところにあります。

「Fraction」というノードがあるようですね。

Frac 表現式は、値を受け取り、受け取った値の端数部分を出力します。
言い換えると、入力値が "X" の場合、結果は "X - X の Floor" です。
出力値は 0 から 1 です。
下限は含みますが、上限は含みません。


といった感じの挙動になるようです。

・Fraction
Fraction002.png
「A」はFloatの値を指定します。
「Return Value」は端数部のFloat値になります。


実際にテストしてみました。
Fraction000.png
こんな感じでノードを繋いでみました。

結果はこんな感じに。
Fraction001.png
「1.8」というFloat値の端数部が「0.8」というFloat値に変換されました。
「1.3」というFloat値の端数部が「0.3」というFloat値に変換されました。


ここらへん結構簡単にできるのはいいですね!
スポンサーサイト

| UE4 | 18:14 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 浮動少数値の端数部分を四捨五入して整数に変換する(Round)

浮動少数値の端数部分を四捨五入して整数に変換する方法です。

参考サイトはこちら。

・Math 表現式
https://docs.unrealengine.com/ja/Engine/Rendering/Materials/ExpressionReference/Math/index.html

「Round」というノードがあるようですね。

Round は端数部分が半分以上の場合、その値を次の整数へ値を四捨五入します。半分以下の場合は切り捨てます。
例:
1.1 は四捨五入すると 1 となります。
1.4 は四捨五入すると 1 となります。
1.5 は四捨五入すると 2 となります。
1.85 は四捨五入すると 2 となります。


といった感じの挙動になるようです。

・Round
Round002.png
「A」はFloatの値を指定します。
「Return Value」は小数部を四捨五入した整数になります。

実際にテストしてみました。
Round000.png
こんな感じでノードを繋いでみました。

結果はこんな感じに。
Round001.png
「1.8」というFloat値の小数部が四捨五入されて「2」という整数に変換されました。
「1.2」というFloat値の小数部が四捨五入されて「1」という整数に変換されました。

ここらへん結構簡単にできるのはいいですね!

| UE4 | 20:18 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 浮動少数値の端数部を切り捨てて整数に変換する(Truncate)

浮動少数値の端数部を切り捨てて整数に変換する方法です。

参考サイトはこちら。

・Math 表現式
https://docs.unrealengine.com/ja/Engine/Rendering/Materials/ExpressionReference/Math/index.html

「Truncate」というノードがあるようですね。

Truncate ノードは、整数部分は変更せずに端数部分を削除して、値を切り捨てます。
例:
1.1 は切り捨てると 1 になります。
1.4 は切り捨てると 1 になります。
2.5 は切り捨てると 2 になります。
3.1 は切り捨てると 3 になります。


といった感じの挙動になるようです。

・Truncate
Truncate002.png
「A」はFloatの値を指定します。
「Return Value」は小数部を切り捨てられた整数になります。

実際にテストしてみました。
Truncate000.png
こんな感じでノードを繋いでみました。

結果はこんな感じに。
Truncate001.png
「1.8」というFloat値の小数部が切り捨てられて「1」という整数に変換されました。

ここらへん結構簡単にできるのはいいですね!

| UE4 | 14:44 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 第3回UE4何でも勉強会 in 東京

第3回UE4何でも勉強会 in 東京というイベントがあったようなのでまとめです。

イベントページはこちら。

・第3回UE4何でも勉強会 in 東京
https://ue4allstudy.connpass.com/event/129917/presentation/

動画はこちら。








・ブラウザで遊ぶUE4 PixelStreamingでなんかやってみた!!!!編
https://docs.google.com/presentation/d/1h9_K2gmZowvNYskreqOfsKEKnimUQ3qlGd8CydoayzU/edit#slide=id.p

・UnrealEngine4でUI。 UnrealEngine4でUI。SpriteStudioの場合
https://docs.google.com/presentation/d/14E6nd-go6TMKn9mH_Q5rwPlrl4d6AgMes4oVtSRz8YU/edit#slide=id.p1

とりあえず自分用メモとして。

| UE4 | 18:36 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 配列に入っているすべてのアクター(Actor)を破棄して配列の要素も削除する

配列に入っているすべてのアクター(Actor)を破棄する方法のメモです。
これについてはアクターだけでなく、配列のコンポーネントなどを破棄する場合にも使えるのかなと思います。
一度軽くはまったので備忘録として。

例としてアクターを持つ6個の要素を持つ配列を用意しました。

まずは配列に入っているすべてのアクターを破棄しつつ、配列の要素からも削除していきます。
普通にBPを書くとこんな感じになると思います。
配列全削除000

するとこんな感じの結果になりました。
配列全削除001
6個要素があるのに3回しか実行されません。

これは配列の「Remove」を行うことで配列の要素数が減ってしまい、
結果3回しかループが実行されない
というのが原因になります。

ここらへんC++とかでのイテレーター周りの間隔に似てる感じですかね。

ANSWERHUB にも同じような質問があるようです。

・オーバーラップしたアクターをDestroy Actorで破壊しようとするとエラーが出ます。

これを解決する方法を調べてみるとこんな感じの物がありました。

・How can I properly destroy actors from an array inside a loop

これを解決する方法として配列の要素数はその場では減らさず、
ループが終わったときに配列の要素をクリアしよう。
というものみたいですね。

BPはこんな感じに。
配列全削除006
要素数は減らさないが、配列の中身は無効にしておく。といったものみたいですね。

結果はこんな感じに。
配列全削除003
無事6回実行されているようです。

上記の他に解決する方法として、
「ReverseForEachLoop」を使うというのができそうです。
こんな感じですね。
配列全削除004
配列の逆から回せば要素数減っても問題ないよね。というものです。
一応「Remove」は「Index」を使って削除してます。


実行するとこんな感じに。
配列全削除005
こちらも無事6回実行されているようですね。

みなさんわかってるかもしれませんが、うちはつまずいたのでメモということで…。

| UE4 | 18:42 | comments:0 | trackbacks:0 | TOP↑

| PAGE-SELECT | NEXT