妹でもわかるUnrealEngine4

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

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

NPCとの会話のシステム(4) クリックして話を進める

f:id:una_unagi:20171001234415g:plain

「分割したセリフを、クリックして読み進めるようにした。これがだいたいの完成型。ちゃんとDialogueっぽくなったはず」

妹「最初のへんがなんかおかしいんだけど」

「なんでかわからないんだけど、ウィジェットだけ入力を受け付けるようにしてるのに、キャラクターがそのままの勢いで暴走してしまう。キャラクターはTPSテンプレートのままなんだけど。とりあえず今回の話には関係ないやつだと思う」

f:id:una_unagi:20171001234706p:plain
f:id:una_unagi:20171001234716p:plain

ウィジェット側には特に変わったことはしてない。画面の拡大縮小に合わせるためのScaleBoxとSizeBoxの組み合わせとかは、昔の記事にあるはず。あと、画面上のどこをクリックしても反応するように、ダミーのImageウィジェットを配置してる。あとクリックしたらディパッチャーを呼び出す」

f:id:una_unagi:20171001235039p:plain

「ページ切り替えの仕組みとかは、全部こっちのメッセージ呼び出し用アクターに書いてる。ウィジェットの中にはテキストの切り替えの仕組みと、今日追加したディスパッチャーの呼び出し以外はブループリント書いてない。なんとなくウィジェットに細かい仕組みを入れたくなかったから」

妹「こうすると街の人との会話とかは作れると」

「このぐらいのやつだったらわりと簡単に作れる。立ち絵の切り替えとか、フラグによる分岐とか、色々上乗せしていけば大変になってくるけど」

妹「そういう場合はどうするの?」

「例えば立ち絵だったら……」

@立ち絵1,LEFT
ああああああああ
あああ
あああああ

「みたいに書いて、先頭が@の行があったらその行は無視して、『@』を削除して、『,』で分割して、"立ち絵1"と"LEFT"という文字列を取り出せれば、あとは適当に分岐させて」

妹「やっぱり簡単じゃなさそう……」

「それはまあ、これってある意味じゃ新しいプログラミング言語を作り出すような物だからね。必要な分だけ最低限でいいとはいっても、やりたいことが増えると大変になる。NScripterみたいな、他のノベルゲーム用に作られた言語をパクるのもいいし」

妹「他のは使ったことないからわからん」

「Unityとかだと、その中で動くノベルゲーム用のプラグインとかあるんだけどね。UE4のは今のところ見あたらない。あとは全部文字列の中に含めずに、適当に色んな変数を追加した方が簡単な場合もあるかも。どうしても難しい部分は妥協も必要」