投稿記事

2023年 07月の記事 (3)

わんころのUE5勉強会 2023/07/31 21:22

自作ゲームの進捗17:内部的な部分などを修正、追加など

皆様、こんばんは!

1週間ほど前からコロナに罹っておりまして色々終わっておりました。
まだ喉が若干痛かったり、異様な倦怠感を示していますがとりあえず PC で作業したりなど出来るまでは快復したので生存報告も兼ねて。

現在のプロジェクトですが、UE5.0.3 から UE5.1.1 へ移行しました。
現時点では目立った不具合らしきものが出てないので良かったです。
パッケージ化も行い、こちらも大丈夫そうな気配。

まだ移したばかりなので様子を見ながら進めてみます。



YesNoDialogue の作成。
該当BP へのイベント通知周りを少し考えないといけなくなったのですが見た目も結構気に入ってるのでどっかで使おうと思ってます。


UE5.1 に移した理由の一つに Overlay Material で楽をしたかったというのがありまして、選択中の StaticMesh を分かりやすくしたいなと思い早速実装。

SetOverlayMaterial を呼んで指定のメッシュにマテリアル設定するだけでお手軽に使えるので非常にありがたいです。



マテリアルは Opaque/UnLit で設定し、Fresnel ノードを使った簡易的なもので実装。これだけでも選択中というのが分かるのでいいですね~。

後は簡易的なインベントリ画面の作成や、内部的なところをあれこれ追加していきました。

画面で見せれるような場所があまりないので以前とほぼ変わってなさそうに見えますが、内部的な部分はちゃんと使いやすくなっていってます。


先日 UE5.3 Preview1 が公開されてちょっとだけ触ってみました。
UE5.2は殆ど触ってないのにもう UE5.3 が...早いですね~

かなり熱いですし熱中症なども含め、皆様もどうかご自愛下さい!
それではまた!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

わんころのUE5勉強会 2023/07/12 23:30

自作ゲームの進捗16:ダイアルロック解除の仕掛け

皆様、こんばんは!

ここ最近眠気に負けすぎてしまい UE5 を触れてなかったのですが、少しでも取り戻すため作業を再開していました。


今回実装したのがダイアルロックの解除処理です。
以前 YouTube で紹介したことあったんですが、あの時に比べて出来ることも増えたため処理自体は結構スマートになったかなという印象です。

先日スーツケースを Blender で作成したのですが、それと連動する仕掛けも欲しいなと思っていたため、当初は普通の鍵で開けるタイプにしようとしてましたが、ダイヤルロックで解除する方式にしてみました。



キャラの視点からカメラの切り替えに使った「Set View Target with Blend」ですが、このスーツケースの BP に Camera Component(画像の DialLockCamera) を追加し、Camera Component を引数 "New View Target" へは直接繋げませんでした。

この "New View Target" は Actorのオブジェクト参照だったことを今回初めて知りました(Camera Actor 限定だと思ってた)

Camera Component から「Get Owner」を出すことで接続でき、カメラの切り替えが出来ました。かなり便利な関数ですね。

これなら別の Actor へ視点を移したりも結構簡単に出来そうだなと思いました。


そして、当初予定していた2つ3つの謎を解くという目標はほぼ達成しました。後はどうこの謎解きを連動させるかなどを考えていきます。


オプション画面の実装がまだ残っているので、これが結構厄介かもしれないです。

それではまた!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

わんころのUE5勉強会 2023/07/02 20:23

【UE5】C++を少しだけ勉強してみたのでメモ書き

皆様、こんばんは!

最近 Twitter では呟いてなかったですが、少し C++ を触っておりました。またやること増やして...とは思ったんですがどうしてもやってみたかったことがあって触ってみました。

自分なりに便利そうな関数を実装してまとめてみようと思い、出来ればプラグインにしたりなど、とりあえずよく分からないなりに進めてみようかなと。

※注: 意味不明なことを書いている可能性があります

四則演算


これは1年前にチャレンジしたものですが、四則演算を元々ある Increment Int のようにノード1個で更新するものを作成してみました。画像は Integer型ですが、Float型も用意しました。

できれば Add Pin をサポートしたいと思うのですが、まだ調べれてないので後日確認予定です。


引数に参照渡しを使う場合は UPARAM(ref) を付ける必要があります。

公式:ゲームプレイ要素をブループリントに公開する

「実行可能な関数およびオーバーライド可能な関数」に

関数シグネチャを作成する場合、リファレンスでパラメータ パスを作成すると、それがブループリント ノード上の出力ピンになることに注目してください。リファレンスでパラメータ パスを作成するには、 UPARAM() マクロを使います。

という記述と一緒にサンプルコードが記載されています。


配列の昇順/降順ソート


使うかわからないですが、配列内をソートするための関数です。Ascending フラグが True で昇順、False で降順になります。

公式:TArray:Unreal Engine における配列

配列は TArray を利用するようです。



TArray::Sort は引数なしの場合、デフォルトで昇順になるようです。

降順の指定方法がよくわからなかったのですが、TArray::Sort の項目(ソート)を見ると、文字列同士の長さを比較しているサンプルがあったので Intger型で置き換えてみました。

一応出力結果は大丈夫そうな感じでしたが、C言語では見たことない記述な上、合ってるのかどうかよく分かってないという...
こういう書き方はラムダ式と呼ばれているようでした。


平均値


引数で Integer型の配列を受け取り、その平均値を返す関数です。

配列内を全部足して、最後に要素数で割れば平均値になりそうなのでこんな感じにしました。

配列の長さは C++ だと Length ではなく、Num みたいです。


DateTime - DateTime

※ 若干挙動が怪しいので注意ですが、とりあえずメモ書き

日付と時間を DateTime構造体で返す「Now」という関数があります。
開始時間を「Now」で取得して変数に保存し、終了時間との差分を求めれば時間の計測などに使える便利な関数ですが、UE5 だとバグがあるみたいで Unreal Engine Issues に報告が上がっています(UE5.3 で修正されるようですね)


上記画像のように「Now」から引っ張り、減算ノードの入力ピンに繋いだ時点で、DateTime構造体からTimespan構造体に変換されてしまうようで、これがバグになってるそうです。

公式:FDateTime から "Operators" の - 演算子の項目を見ると、
FDateTime - FDateTime を FTimespan で返すものがあったのでこれも関数にしてみました。



それぞれの構造体は下記ヘッダにあるそうです。
#include "Misc/DateTime.h"
#include "Misc/Timespan.h"


試しに「Delay」の開始前に「Now」で取得した値を変数へ保存し、画像のように5秒後この値を出力すると4が返り、10秒を指定すると9が返ってきたので -1秒されてるようでした。

UE4 ではバグがなく普通に使えるそうなので、挙動の確認をしてみましたが、UE4 でも -1秒 された値が出てたので多分大丈夫ということにしました。




二つの差分を秒で返すという関数を作成してみました。分や時間、ミリ秒も作成。結果も同じだったので一旦よしとしました。

これも後日可能なら Add Pin をサポートしてみようと思います。


今のところ何かの値同士を計算するくらいしか行ってないんですが、かなり難しいですね...ややこしいというか、記述が独特というか...

前よりちょっとだけ理解は出来たような気はするので少し前進です。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事のタグから探す

限定特典から探す

記事を検索