fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

2016年07月 | ARCHIVE-SELECT | 2016年09月

| PAGE-SELECT | NEXT

≫ EDIT

UE4 指定した範囲の中のランダム位置を取得(Random Point in Bounding Box)

指定した範囲内のランダムな位置を取得する方法です。
ここらへんを参考にさせてもらいました。

・「Unreal Engine」エンドレスランナー作成
http://shivat.hatenablog.com/entry/2015/07/14/004423

・UE4:Random Point in Bounding Box メモ
http://unrealbussan.hatenablog.com/entry/2015/02/27/143723

指定した範囲内のランダム位置を取得するには
「Random Point in Bounding Box」ノードを使います。
RandomPointInBoundingBox000.jpg
「Origin」を中心とした位置に
「Box Extent」を±した位置をランダムで返します。

公式ドキュメントはこちら。

・Random Point in Bounding Box
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Math/Random/RandomPointinBoundingBox/index.html

両方ともVector型なので、こんな感じで組み込みます。
RandomPointInBoundingBox001.jpg
サードパーソンのテンプレートにある「?」マークのついた得体のしれないものを
上記の処理で適当に配置してみました。
RandomPointInBoundingBox002.jpg
こんな感じでいい感じに配置できました。

この処理は別途でランダムノードを使って計算すれば同じようなことができたりするのですが
おそらく使い方の想定としては、他のアクターなどからパラメータをとってくるのだと思います。

というわけで「Box Trigger」を配置してやってみます。
RandomPointInBoundingBox004.jpg
上記の「Box Trigger」から範囲を受け取って
「Random Point in Bounding Box」ノードを実行します。
RandomPointInBoundingBox003.jpg
こんな感じですね。
そうすると、配置した「Box Trigger」のコリジョンの範囲に配置されます。
RandomPointInBoundingBox005.jpg
というわけで、直接数値を指定するより、
エディタ上で配置したものの範囲にこれで位置を取得できるので便利なのかなと思います。

ゲームを作るとこういった処理は、
敵のポップ位置だったりで結構使いそうな気がするのでよさそうですね。

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

≫ EDIT

Unity 参考メモ

Unity 参考用メモ。


























| Unity | 16:50 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

CEDEC2016 VR記事まとめ

CEDEC2016のVR記事メモ。



















| VR | 17:19 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 アクター(Actor)のサイズの取得(Get Actor Bounds)

アクターのサイズを取得する方法です。
ここらへんのサイトを参考にさせていただきました。

・GetActorBoundsでアクターの大きさを調べる
http://imoue.hatenablog.com/entry/2016/06/11/225622

・GetActorBoundsでアクターの大きさを調べる・その2
http://imoue.hatenablog.com/entry/2016/06/12/223950

サイズを取得するには「Get Actor Bounds」ノードを使います。
アクターのサイズ000
「Target」にはアクターを指定します。
「Origin」には中心位置、「Box Extent」でサイズが取得できます。
「Only Colliding Components」にチェックをいれることで
コリジョンが存在する部分だけのサイズを返してくれるようです。
(チェックをいれないとすべてのコンポーネントを含めたサイズになる)

Trigger Box などを使った場合などはチェックをいれないとちゃんとしたサイズが取れないようですね。
Box Collision などはとりかたが違うっぽいので調べ中です。

| UE4 | 19:28 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 マウスの位置のワールド座標とワールドベクトルの取得(Convert Mouse Location To World Space)

画面状にあるマウスの位置のワールド座標とワールドベクトルを取得する方法です。
ほとんどの説明はこちらに。

・UE4 マウスの位置をワールド座標に変換する
http://qiita.com/nkdtr/items/3a6768f6a60996136794

マウスの位置のワールド座標とワールドベクトルの取得には
「Convert Mouse Location To World Space」ノードを使います。
マウスの座標取得001
「Target」にはプレイヤーコントローラーを指定します。
「World Location」でワールド座標が。
「World Direction」でワールドベクトルが取得できます。

上記サイトを見ると取得した座標とベクトルからオブジェクトの交点を取得することができます。
実際に組んでみるとこんな感じですね。
マウスの座標取得000
「Convert Mouse Location To World Space」で取得した座標とベクトルを使ったレイで
障害物とのあたり判定をして、その当たった位置を取得という処理ですね。

「Line Trace By Channel」についてははおいおいということで。

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

≫ EDIT

UE4 VR・AR関係情報まとめ

VR関係の情報をまとめてみました。
実際にあとでVRをやるとき用のメモです!

・GTMF 2016:Unreal Engine 4で高品質なVRコンテンツを制作するために知っておきたい100のテクニック Epic Games Japan


・Japan VR Summit「VR開発者を支える最新技術動向」Unreal Engine (UE4)


・机上の肉弾戦!ユーザー制作「Unreal Engine 4」AR対応プラグイン配信

http://www.gamespark.jp/article/2015/12/30/62789.html

・UE4 Showdown Demo VR に使われている軽量化技術や見所、パララックスマッピングなど
http://togetter.com/li/869284

| UE4 | 16:27 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 アクター(Actor)をブループリントから生成する(Spawn Actor from Class)

ブループリント上からアクターを生成する方法です。
公式ドキュメントはこちら。

・ブループリントでアクタをスポーン/ 破壊する方法
https://docs.unrealengine.com/latest/JPN/Gameplay/HowTo/SpawnAndDestroyActors/Blueprints/index.html

アクターを生成するには「Spawn Actor from Class」ノードを使います。
こんな感じですね。
アクターを生成000
「Class」には生成したいアクターのクラスを指定します。今回はサンプルにあるドキュメントクラスですね。
(?のついた丸い板)
あとは公開してる変数について初期値を設定することが出来ます。
今回は「Spawn Transform」に初期位置として設定している感じです。

と、こんな感じで動的にアクターを生成することができます。
サンプルのこんな画面に対して、
アクターを生成001
アクターをブループリントから生成すると
アクターを生成002
こんな感じで実行時に奥の上のほうにドキュメントアクターが生成されるようになりました。

ゲームを作るとなると、おそらく静的ではなく動的になにかを配置するのが多くなりそうなので
このノードはたくさん使いそうな気がしますね。

アクターのスポーン時の入力値の公開方法はこちらに。

・ウィジェットやアクター作成(スポーン)時に変数の初期値を設定する
http://kagring.blog.fc2.com/blog-entry-143.html

| UE4 | 15:54 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 ランダムな単位ベクトルを求める(Random Unit Vector、Random Unit Vector from Stream)

ランダムな単位ベクトルを求める方法です。

ランダムな単位ベクトルを求めるには「Random Unit Vector」を使うのが一番簡単です。
ランダムベクトル000
シードを使うことができる「Random Unit Vector from Stream」ノードもあります。
出力がランダムな単位ベクトルになります。簡単!

公式ドキュメントはこちら。

・Random Unit Vector
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Math/Random/RandomUnitVector/index.html

ちなみに2軸の平面なベクトルを求める場合にも使えるかなと思ったやってみました。
平面ランダムベクトル000
一つの軸の値を0.0にしてNormalizeするという方法はあんまりスマートじゃないのですね…。
そもそもZ以外が0.0が来た場合0ベクトルになりますし。

というわけで以下の方法を使ってみました。
平面ランダムベクトル001
「Random Float in Range」で角度を求めて、
その角度から「Sin」「Cos」で2軸の単位ベクトルを求める感じですね。
ラジアン使えという話がありますがそこはまあ…ということで(笑)

結構便利なノードがUE4にはあるのですが、ゲームとして使う場合には
いろいろ考えないといけないことがありそうですね。

| UE4 | 16:08 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 座標軸と単位の話

UE4の座標軸と単位について忘れてしまうのでメモ。

・Unity 引っ越しガイド
https://docs.unrealengine.com/latest/JPN/GettingStarted/FromUnity/index.html#faq

上記FAQによると、

Unity と UE4 は両方とも左手座標系ですが、軸は入れ替わっています。UE4では+ X 軸は「前」で、+ Y 軸は「右」、+ Z 軸は「上」になっています。

ということで、座標軸はZアップの左手座標系で、
+ X 軸は「前」で、+ Y 軸は「右」、+ Z 軸は「上」のようです。

単位については

Unity では、計測の基本単位は 1 m です。UE4 では、計測の基本単位は 1 cm です。
そのため、Unity で何かを 1 単位 (m) 動かすと、UE4 で何かを 100 単位(cm) 動かすことに相当します。
Unity で何かを 2 フィート動かすと 0.61 単位 (メーター) になり、UE4 では 61 単位 (cm) になります。

ということで、UE4ではcmが単位ですね。

ここらへん結構忘れがちなので気を付けないとですね。

| UE4 | 15:27 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 毎回同じ値を返す乱数(Make Random Stream、Random 型 from Stream、Random 型 in Range from Stream)

乱数に対して種(シード)を設定することで、実行するごとに同じ結果を返す乱数を扱う方法です。
ランダムシードについてはC言語の話ですがここらへんを参考に。

・Random Seed って言葉を初めて知った!
https://chomado.com/programming/randomseed/

これはランダムストリームと呼ばれる仕組みのようです。
公式ドキュメントはこちらを。

・ランダム ストリーム
https://docs.unrealengine.com/latest/JPN/Engine/Blueprints/UserGuide/RandomStreams/index.html

まずは乱数の種(シード)を作成します。
固定乱数000
「Make Random Stream」ノードを使います。
「Initial Seed」に種の値を設定します。ここを固定にすると実行するたびに同じ値を返すようになります。

この「Make Random Stream」で作成した種を変数に保存します。
固定乱数001
この変数は「Random Stream」型で作成します。

あとはこの「Random Stream」型変数の値を使って乱数を生成するだけです。
固定乱数002
「Random Integer from Stream」
「Random Integer in Range from Stream」
「Random Float from Stream」
「Random Float in Range from Stream」
などの、from Stream とついている「Stream」という入力があるノードで使うことができます。

あまり意識してこれを使うことはないと思いますが、
一応覚えておくと良さそうです。

| UE4 | 12:49 | comments:0 | trackbacks:0 | TOP↑

| PAGE-SELECT | NEXT