読者です 読者をやめる 読者になる 読者になる

妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

アクターじゃないクラスを生成する方法

「AIの仕組みをUE4のブループリントで実装してみようと思ったんだけど、その前段階としてちょっと困ったことがあったんで、今日はそれのやり方を調査してた」妹「困ったこと?」「なんというか、アクターをスポーンさせるのは普通に出来るし、やり方も色んな…

OpenAssetOrgのアセットで2Dゲームを作る(28) BuildStringによる文字の結合

「フォントはOTFフォントなら問題なさそうということがわかったので、スコア表示も入れる。加点の仕組みがないからずっと0点のままだけど」妹「BuildStringというのは?」「文字の結合はAppendノードを使ってもいいんだけど、BuildStringを使う方がノードの…

OpenAssetOrgのアセットで2Dゲームを作る(18) KillZVolumeで消えない連中をどうにかする

「昨日UE4でテストプレイを開始したまま、すっかり忘れて違うことしてたんだけど、なんだか凄くゲームが重たくなっていた。なぜかと思って調べてみると、出てきた王様たちが全員消えずに行進を続けて、はるかかなたを目指して歩き続けてることが発覚した」妹…

Rotator用Equalノードの許容範囲

妹「昨日の角度のやつだけどさ、あれ3Dの角度でやるとどうなるんだろ? 例えば90度としてもさ、ピッチとロールとヨーがあるわけだから。その合計? それとも全部が90度以内だったらイコールとか?」「それは全部90度以内だったらイコールの方みたい」 「こう…

GetAllActorOfClassからの絞り込み

「昨日のだとアクター全部を落下させる形になってしまうので、落下させるアクターと、させないアクターと区別する方法を考える」「一番簡単なやり方はこれ。Actorクラスじゃなくて、特定のクラスで絞り込む方法。一番ノードが少ないし、動作的にも多分速い。…

Tickイベントの実行順・ティックグループの謎

youtu.be ブループリントマニアックス from Masahiko Nakamura www.slideshare.net「先日紹介したアンリアルフェスの動画を見てたんだけど、まず気になったのがこのブループリントマニアックスのセッションで紹介されてた、ティックグループ。スライドの方で…

UE4.14.0 preview1のTSetとTMap状況

「先日TMap型の変数が作れないという記事を書いたけど、あれが実は作れるということがわかって……」「実験的な機能だから、エディタ設定でここにチェックを入れないと駄目だということがわかった」妹「じゃあもう使えるの?」「作れるけど……使えない」妹「?…

4.14でのTMap型サポートはまだ限定的?

「4.14の機能紹介にこんなことが書いてあったんで、詳細パネルをつつき回してみたんだけど、どうもC++から作ったTMap型に、詳細パネルからデータを追加したり出来るだけで、肝心のTMap型自体を作るのはブループリントとエディタだけでは無理っぽい気配だった…

デリゲートとイベントディスパッチャーの仕組み

妹「カスタムイベントをバインドしようと思うと、ちらほら"デリゲート"って単語が出てくるんだけど、これは何なの?」docs.unrealengine.com「沢山の関数を登録して、それを後から呼び出して実行するやり方のこと。UE4のブループリントの場合は関数じゃなく…

LinerDampingの動作確認

「昨日のLinerDampingがどういうことなのか気になったので、さらに追加テストを実施した」 「というかんじで、赤い方のLinerDampingを増やしておくと、やっぱり普通の重力落下も遅くなってる」妹「やっぱり物体の動くを遅くしたり、速くしたりする設定なのか…

Adding Hover Componentの動画で学習

妹「Component作るっぽい動画がいくつか見つけたんだけど、英語->日本語字幕ではさっぱりわからん。でも、やりたいことが出来そうな気配は漂ってた!」「漂ってたんだ。じゃあとりあえずこの動画から見ていくことに」docs.unrealengine.com妹「ホバーするコ…

「Retriggerable Delay」で、もう1回ボタンを押したらDelayの待ち時間をリセット

妹「だいぶ前に兄に聞いた時は、そういうノードはないんじゃない? って言われたんだけど、実はあったというやつ」妹「何をしようとしてたかというと、ボタンを押したらブレーキフラグを立てて、一定時間立つとそのフラグが解除される。その一定時間待つのに…

数字の足りない桁をゼロで埋める方法「Right」

妹「こういう感じで、時間とか表示する時に、数字がひと桁だったら0を入れて表示したいことって、よくあるんだけど……」妹「今回は色々考えた結果、文字列を加工したらいいのでは? と思って、そういうブループリントを組んだんだけど、もっと良い方法あるん…

Lerp をさらにもっといい感じにする Ease

妹「数字をいい感じにしたいんだよ。上手く説明できないんだけど、とにかくいい感じに数字を変化させたいというか」「それはEase的な話かなあ……」[UE4] 動きに緩急をつけるEaseノードの紹介 | historia Inc - 株式会社ヒストリア「AとBをAlphaのピンをつなぐ…

小さい時ほど数字を大きくする・Larp と NormalizeToRange 応用編

妹「小さい時ほど大きくなるような数字が欲しいんだよ。こう、スピードが遅い時は大きい数字になって、速い時ほど小さい数字になるのがいいんだけど」「なんだかよくわからんけど、たぶん昨日の応用の話のような気がする」 「Lerp は、A と B の数字を入れ替…

謎ノード解説『Lerp』『NormalizeToRange』

妹「あとLerpもよくわかんないんだけど。昨日と同じ、ランドスケープマウンテンのサンプルなんだけど……」妹「なにがわからないかというと、まず読み方がわからない」「読み方……って言われてもこれ略語だから、どうなるんだろ? Linear interpolationを略して…

ランドスケープサンプルの、徐々に角度を変える仕組み

妹「ランドスケープのサンプルを見て飛び方の調査をしてるんだけど、よくわかんないノードがある。いっぱいある」「日本語のドキュメントがないやつかな」妹「日本語のがなかったり、日本語なんだけど意味がわからなかったりした。角度関係っぽいんだけど。R…

GetActorBoundsでアクターの大きさを調べる・その2

※6/14追記 妹にこれだと大きさじゃなくて半分の大きさを調べてるのでは? と言われて確認したらやっぱり半分だったので、そういう感じに訂正しました。妹「バウンディングボックスというのを調べればいい、調べられるということはわかったけど、結局大きさは…

rerouteノードの仕組み

妹「ノードをつなぐ線を曲げる時とかに、丸いポイントを付けてるけど、これって曲げるだけじゃなくて、その丸いやつから複数のノードにつなげるよね?」「つなげるよ」妹「でもドキュメントにはそれ書いてなかったような……あ、今見たら書いてあった」docs.un…

ビヘイビアツリー研究② ブラックボードの使い方

妹「ブラックボード? というやつが、ビヘイビアツリーの変数なんだよね? これの設定の仕方もよくわからないんだけど。関係するノードはいくつか見つかったけど、どこにSETするのか決める方法が謎だったりとか」「とりあえずブラックボードにSETしたりGETし…

スポーンアクタノードに初期値設定用のピンを追加する

妹「なんかスポーンする時のノードに、パラメータとか増やせるようになってる気がするんだけど」「それは前からそうなってるね。4.10かなあ」妹「知ってたなら教えてくれ」「まだ自分でもあんまり使ってない機能だったから……」「編集可能と、スポーンに公開…

ブループリントではゼロ除算エラーは起きない

※3/20 割る数と割られる数を逆にして実験してしまっていて、説明と図に間違いがあったので修正妹「今コンストラクションで色々やる仕組みを作ってるんだけど、割り算の時にゼロって使っても良かったんだっけ? パラメータによってはそんな事になる可能性があ…

SpriteStudioのユーザーデータに変数を埋め込んでUE4で取り出す

imoue.hatenablog.com「この前の無限ループになってたやつ、やりたいこととしてはSpriteStudioのアニメに合わせてコリジョンをオン・オフしたかったんだよね?」妹「そーだよ」「だったらSpriteStudioのユーザーデータを使うといいのでは?」妹「ユーザーデ…

InRange - 数値が特定の範囲ならTrueを返すノード

docs.unrealengine.com妹「数字がある一定の範囲内の時だけっていう分岐を作ろうとしてたんだけど、InRangeっていう使えそうなノードを発見した」「たしかにこれだとノードが少なくて済みそう。なぜFloat版しかないのかは気になるけど」妹「……あれ? Floatし…

論理演算ノードについて

妹「両方ともTrueだったら、Trueが出てくるのがANDノードだよね? これ逆に両方ともFalseだとTrueが出てくるノードはないのかな?」「ANDとかORとか全部ひっくるめて論理演算っていうんだけど……」妹「それ。自分で調べてみてたんだけど、何やら数学めいた言…

ゲームパッドの振動とスマートフォンの振動は同じノード

「UnrealMatch3で遊んでると、なぜかXBOX360コントローラーがブルブルいってて、なぜこんな不思議仕様になってるかと調べてみたら、振動に使うノードが同じだった。ClientPlayForceFeedbackノードで、ゲームパッドがあればそれを、スマホで動かしてればスマ…

配列のInsertとSetArrayElemの違い

妹「配列のInsertとSetArrayElemって一体何が違うのかと思って、マニュアル見たけど全然わからなくて、色々やってみた結果、Insertだとそれより後ろやつが1つずつずれていって、SeArrayElemというのだと上書きすることがわかった」「うーん、それはマニュア…

インターフェースのinputピン・outputピンを活用する

「ブループリントの中身を見ていて気になったところがあるんだけど」 「Overlapの時に自機アクターを変数に入れてるみたいだけど、これはインターフェースのinputピンから渡した方がいいのでは?」妹「インターフェースのinputピン? 見たことはあるけど、別…

ブループリントを実行するのにかかる時間を調べる

妹「イベントティックで、配列の中身をループさせてチェックするとかやっていいのかな?」「やってもいいと思うけど、なんで?」妹「茂みとかもそうだけど、アクションが起こせるアクターの近くに行った時に、それとわかるような演出を出したいんだよ。で、…

OnKeyDownとOnPreviewKeyDownの違い

妹「結局のところOnPreviewKeyDownのプレビューというのはなんだったの? べつにOnKeyDownでも良かったの?」「OnKeyDownはそのウィジェットにフォーカスがある時だけ動くんだけど、OnPreviewKeyDownだとそれが子ウィジェットにフォーカスがあっても動く、と…

二次元配列の作り方・その2

関連記事imoue.hatenablog.com妹「昨日言ってた、横幅を足したり引いたりして上下に動かす案なんだけどさ、あれだと横にいきすぎた時のループ処理とか出来なくない? 現在位置がどうなってるかわからないから、普通に1足すと次の段にカーソルがいっちゃうよ…

ボンヂャーラビット強制射出事件(解決編)

妹「アイテムを持つところは、なんかおかしいから、一から書き直したいとは思ってたんだよ。捨てる時もうまくいってないし、だいぶ前に書いたとこだから自分でも何でこうしたのかよくわからないし」「とりあえず吹っ飛びを抑止するだけなら、今の仕組みのま…

Selectノード(選択する)の使い方

妹「ぷちコンの締め切りが近づいてきて、困ったことが立て続けに出てきたんだけど、まずはSelectノードの使い方教えてくれ」「セレクト? 数値に合わせて何を実行するか変わる、Branchの進化系みたいのじゃなかったっけ?」妹「それはSwitchだよ。それとは別…

配列の中身をランダムに取り出す(Randomが返す範囲)

「そういえば、こないだブループリント見てて気になったんだけど、これって配列の中身からランダムにGETしてるんだよね?」妹「そーだよ」「でもこれだと最後の1個が絶対に選ばれないと思うんだけど。何度やっても絶対選ばれないアクターがあるはず。ここは…

Selfノードはそのクラスではなく個別のインスタンスを取得する

妹「EndOverlapが思ったように動いてない気がするんだけど、どうやって調べたらいいんだろうか?」 「普通にブレークポイントを置くか、PrintStringで調べるかすればいいのでは?」 妹「ブレークポイントだと動きが全部とまっちゃってわかりにくいし、PrintS…

BeginPlayイベントは、同じクラスのアクターをたくさん置くと置いた数だけ起きる

妹「Randomって、どれか1個の数字が出るだけだよね? たくさんの数字が出てくるわけじゃないよね?」 「たくさんの数字はでてこないです」 妹「ランダムでどこか1箇所だけ変化させたいんだけど、ランダムにすると複数箇所変わっちゃうんだよ。0とか1とか入…

Enum型からName型への変換

9/5 説明内容が間違いがあったので修正 妹「マップ上の地点にEnum型でステージ名を設定してて、それで移動先のレベルを決めてるんだけど、なんか変換が上手く行ってない気がする」 妹「Enum型のステージ名から、OpenLevelのName型入力につなぐと、自動で変換…

アクタをちょっとずつ目的地に近づける方法・もっと簡単版

「よく考えると、昨日のブループリントだと残りの距離のことを考えてないから、残り2cmしかない時でも5cm先までいっちゃうという問題が残ってる」 妹「途中でBlockされるから別に平気なのでは?」 「Blockだとそうなんだけどね。Overlapにして高速移動させる…

妹、相対的に考える

妹「Vectorの中身を部分的に残したい時はGETしてSETするのはわかったけど、じゃあRelativeとか言うのはなんなのだ? 相対的に設定するんじゃないの?」 「相対的ではあるんだけど、妹が思ってるやつはたぶんOffsetの方が近いと思う。Actorには座標を操作する…