あっぷあっぷブログ

UnrealEngine(ゲーム用途)関連の備忘録です。

【UE5/Animation】ThreadSafe対応の関数内で、乱数ぽいもの生成

ThreadSafe対応の関数内でどうやって乱数生成したらいいんだ?と思ったので考えてみました。

ThreadSafe関数を設定

ステートに来た際に呼ばれてほしいので、On Become Relevant に設定します。

Property Access 経由でGetGameTimeSinceCreationを使う

Property Access「GetGameTimeSinceCreation」というアクターが生成されてからの時間を取得する関数がありました。これを使えば乱数ぽいことができるかもしれないので使ってみます。

案A:SINでなんとかしてみる

ゲーム内時間を0~1の値に変換し、Lerpに繋げ、0~10の値を出力するようにしてみました。

結果

2秒ごとに呼んでみたらこのような結果になりました。
乱数ぽさがでているような。

案B:Stream版のRandom関数を使ってみる

Stream版のRandom関数が使えたので使ってみました。

結果

2秒ごとに呼んでみたらこのような結果になりました。
Seedの値が2ずつ増えていき、出力される値は1ずつ増えていく感じのようです。
規則性がはっきり出ちゃっています。

乱数について調べる

【Unity道場 札幌スペシャル2 2017】乱数完全マスター - YouTube

乱数生成法

Xorshift - Wikipedia

沼にはまりそうなので、調査をいったんやめます。