【UEチャレンジ企画】キャラクターや物体に動きをつける
初学者がUnreal Engineによるゲーム制作に100日取り組んで、どこまでプロの開発者に近づけるのかという本企画。今回は第四弾となります。
前回、『Unreal Engine 5で極めるゲーム開発』を読み始めました。今回はUnreal Engineで動きのある要素を実装するために、学習を深めています。
Unreal Engine企画第五弾!
Unreal Engine100日チャレンジに挑戦している、neruです。
本企画は、Unreal Engineの初学者である私が、100日でどれだけのものを作れるのかというチャレンジ企画です。
初回の記事で、本企画の詳細と、筆者の経験値がどの程度なのかを説明しています。
前回の記事では、『Unreal Engine 5で極めるゲーム開発』という書籍を読み始め、本格的な学習を開始しました。
モデリング機能を活用して地形や物体を作成し、当たり判定を設定することで、ゲームの基本的な舞台を作ることができました。
今回は、さらにゲームとして楽しめる要素を追加するため、動きのある要素について学習を進めました。
キャラクターや物体に動きをつける!
前回の記事では、モデリング機能やコリジョン設定などを通じて、様々な物体や地形を作ることを学習しました。
ただし、今回製作したこのワールドは、このままではゲームとしてプレイすることができません。物体に動きをつけることができていないからです。
現段階では、ゲーム内の物体が動くこともありません。また、キャラクターとのインタラクションを起こしたり、操作によってギミックを作動させたりといったことができません。
やはりゲームとしてはいろいろな仕掛けを用意して、プレイが楽しめるようにしたいです。
今回はゲーム内の要素を動かす方法を学んで、ゲームプレイの根幹となる部分の制作方法を学んでいきます。
また、キャラクターの操作についても、学習を深める必要があります。
前回は、キャラクターの見た目のデータを取り込むことはできましたが、それを操作することはまだできません。
また、敵などのプレイヤーキャラクター以外のキャラクターを動かす方法についても知識がありません。今回の学習では、ゲームとしてやりごたえのあるものを作るために、移動やジャンプなどの操作ができるようにしていきます。また、動く敵キャラクターも作っていきます。
物体に動きをつける
まず学んだのが、ゲーム内の物体の動かし方です。
これまでのチャレンジでも、物体の動かし方について、触れたことがあり、動く床を作ることに成功しました。「猫でも分かる UE4を使ったゲーム開発」というチュートリアルを見て学習しました。
今回はより本格的に物体の動かし方について学びました。
例えば、物体を回転させる方法について学び、以下のような動きを実装しています。なお、ガトリング砲のモデルは書籍のリンクからお借りしました。#UnrealEngine100日チャレンジ 28日目✨
— GAMEMO|Web3とメタバースのインタビューメディア (@Gamemo2con) May 29, 2024
本日はゲーム内の物体(アクタ)を動かす方法を学びました。
動画は、ガトリング砲の銃身を回転させている図。
もっと動きをつけられるよう頑張ります!#ゲーム製作 #ゲーム開発 #UnrealEngine pic.twitter.com/TItu0eGHBf
今度はギミック制作に移ります。
前回の記事ではとげの床を作りましたが、この段階では、床に当たっても何も起きません。床を踏むと、ゲームオーバーになる仕組みを実装したいです。
そのようなギミックを作るためには、ブループリントを使ってプログラムを組む必要があります。
学習したのは、プレイヤーキャラクターと物体が接触した際に、何らかの処理を実行する方法です。
以下のようなブループリントを組むことで、とげを踏んだ時にゲームオーバーになる仕組みを作ることができました。
「Event Hit」と書かれている赤いノードは、物体と接触したときに反応します。画像ではこのノードを「Apply Damage」(ダメージを与える)というノードにつなげることで、接触時にダメージを与える処理を実現しています。
このように、Unreal Engineではノードを組み合わせることで様々な動きを実現できます。
現段階では知っているノードが少ないので簡単な仕組みしか作れませんが、様々な種類のノードを知っていけば、面白い仕組みも作っていけそうです。
これで物体に動きを設定して、ゲームとしての仕組みづくりの一歩目を踏み出せました。
キャラクターを動かす
次に、キャラクターの動かし方を学習します。今回学んだことは以下の二点です。
一つは、プレイヤーの操作を受け取って、プレイヤーキャラクターを動かす仕組みづくりについてです。もう一つが、敵キャラクターを動かす方法についてです。
まずは、プレイヤーキャラを動かせるようにしました。こちらも、「猫でも分かる UE4を使ったゲーム開発」である程度は触れていましたが、改めて理解を深めました。
前回のチャレンジでは、Unreal Engineにデフォルトで入っているマネキンを動かすだけでしたが、今回はインポートしたキャラクターを動かすことに成功しました!
#UnrealEngine100日チャレンジ 30日目✨
— GAMEMO|Web3とメタバースのインタビューメディア (@Gamemo2con) June 5, 2024
本日学習したのは、モノとモノが接触したときの「当たり判定」処理です!
ゲームを動かすうえでぜひ知りたいことだったので、学習出来て良かったです!
スイッチを踏んで色が変わる様子と、コインに触れて取得している様子です。#ゲーム製作 #ゲーム開発 pic.twitter.com/YKIZ8GrGCT
まだアニメーションをつけることができていないので、キャラクターがTポーズのまま平行移動するという何ともシュールな絵面ですが……。見た目はともかく、ゲームをするうえで最低限のアクションはできるようになりました。
プレイヤーキャラクターの操作はできたので、今度は敵キャラクターの動きを作りました。Unreal Engine 5には、敵キャラクターを制作するうえで非常に便利な機能があります。簡易的なAIを使って、自動的にキャラクターを動かすことができます。
#UnrealEngine100日チャレンジ 29日目✨
— GAMEMO|Web3とメタバースのインタビューメディア (@Gamemo2con) May 31, 2024
今日は、AIを作ってキャラクターを動かします!
AIというと難しいイメージですが、UEにはAIを使って簡単にキャラクターを動かす機能があります。
今回はAIを使って巡回する敵ユニットを作りました!#ゲーム製作 #ゲーム開発 #UnrealEngine pic.twitter.com/eYd8dnsgAu
少し設定するだけで、このように特定ポイントを巡回する動きを作れました。
AIと聞いて難しそうなイメージがありましたが、今回のようなシンプルな動きなら、初心者である私でも実装でき、驚きました。
この動きを実装するためには、マップ上に透明な箱のようなものを設置し、巡回するエリアを設定します。
Unreal Engine 5には難しそうなイメージがあったのですが、簡単な操作で複雑な動きを実現する機能があり、いい意味で予想を裏切られました。
これで、敵キャラクターの動きも設定することができました。
今後の目標:ブループリントの理解を深める
今回のチャレンジで、物体とキャラクターに動的な仕組みを追加して、インタラクションを起こせるようにできました。
一方、今回追加した仕組みは単純なもので、より複雑なギミックを作ることはできていません。ブループリントへの理解もまだ不十分です。
次回以降、ブループリントをより深く学習して、複雑な仕組みを作れるようにしていきたいです。
条件分岐や変数など、プログラムを学ぶ上で必須の知識について学んでいきます。
Unreal Engine 100日チャレンジは今後も継続します。
引き続きどうぞよろしくお願いします!
とげの床。現段階では触れても反応しない。