「Your First Game In Unreal Engine5」という初心者用動画を実際に並走しながら実際に作って勉強する企画。
83分の動画ですが、初心者が並走すると10倍くらいかかります…
記事を書いてるともっとかかります(笑)
今回は25分/83分から。
使用しているバージョン
Unreal Engine 5.3.2
各種環境の調整
Static MeshにNaniteを適用 [25:30~]
前回作ったSM_Crateを開き、Naniteサポートを有効化にチェック。
忘れずに下にある「変更を適用」ボタンをおします。
Nanite は Unreal Engine 5 の仮想化ジオメトリ システムであり、新しい内部メッシュ フォーマットとレンダリング テクノロジーを活用して、ピクセル スケールのディテールと多数のオブジェクトをレンダリングします。人が知覚できるディテールだけをインテリジェントに処理し、それ以上は行いません。Nanite のデータ形式は高度に圧縮され、きめ細かいストリーミングと自動詳細度 (LOD) をサポートします。
よくわからないけど、重いデータをいい感じに軽く扱えるようにしてくれるような?
ビューポートの表示モードをNanite ビジュアリゼーション(三角ポリゴン)にすると
Crateに関しても前回作った岩と同じくポリゴン化されているのが見えます。
Naniteサポートを有効化していない場合はこの画面では表示されていないはずです。
StackOBot(サンプルゲーム)からアセット入手 [25:50~]
StackOBot(サンプルゲーム)を起動。
現在のプロジェクトはそのままで多重起動することになります(閉じても問題はないですが)。
ここからはStackOBot上のプロジェクト上での操作。
2つのアセットを選択(CTL押しながらクリック)し、右クリックメニューからアセットアクション>移行
アセットレポートはそのままOK
移行先は、現在1から作ってるゲーム(FirstGame)のContentフォルダを選択
無事コピーが終わったら、StackOBotのプロジェクトは閉じてください。
元のプロジェクト(FirstGame)に戻ります。
StackOBotからアセットの移行が出来ているはずです。
色が灰色になっていた場合、一度ダブルクリック等で中を見ると上のように色がつくと思います。
フォリッジで植物を追加 [26:17~]
フォリッジモードで+フォリッジを押すと、移行してきた植物が選択できるようになっています。
ダブルクリック等で対象をアクティブ化したら石の時と同じように塗っていくことで配置できます。
筆のサイズを変えたい場合は、上の方にあるブラシサイズで調整します。
Scale Xの最大を1.8⇒0.6にして背の高さを控えめにしています。
もし密度を上げたいのであれば、Densityを調整します。
特定のフォリッジを削除したい場合、対象のフォリッジをアクティブ化した後にSHIFTを押しながら塗ってください。
もしくはフォリッジの上の選択をペイント⇒消去に変更しても同様に削除することが出来ます。
次は樹木に関しても同じような処理を行ってみます。
+フォリッジで取り込んで、Scale Xだけ調整して塗っていくだけです。
とりあえずフォリッジの使い方は学べたと思います(アセットは借り物ですが)。
ゲームプレイの設定
スタートマップの設定 [27:17~]
編集 > プロジェクト設定 > マップ&モード
デフォルトのマップをValleyに変更。
なるほど、毎回違うマップスタートだったのはここでしたか。
ゲームモード設定 [28:04~]
Frameworkフォルダを作成し、中にブループリント(Game Mode Base)を作成し、BP_GameModeという名前にします。
次にブループリント(Character)を作成し、BP_Botという名前にします。
次にブループリント(Player Controller)を作成し、BP_PlayerControllerという名前にします。
BP_GameModeを開き、詳細パネルのPlayer Controller ClassとDefault Pawn Class を先ほど作成したBPに変更。
編集 > プロジェクト設定 > マップ&モード
デフォルトのゲームモードをBP_GameModeに変更すると、Default Pawn Class/Player Controller Classも変更されます。
上部タブのプロジェクトに追加(キューブ+マーク)から、Player Startをレベルに設置。
ENDキーを押すと、地表レベルに配置できます。
これでスタートキャラクターの設置ができました。
ただし、まだ移動はできません。
カメラ設定 [30:42~]
BP_Botを開き、Capsule Component(Collision Cylinder)を選択し、詳細パネルのHidden in Gameのチェックを外すと、コリジョンのレンダリングラインをゲームプレイ中に表示するようになります。
動画ではレンダリング表示をして進めていたので一応チェックを外しておきます。
SpringArmコンポーネントを追加。
さらにCameraコンポーネントを枝として追加します。
これにより、SpringArmを調整することで、Cameraの位置を調整できるようになります。
例えば、y軸に-50度回転させて、Target Arm Lenghに2000を設定すれば、こんな感じのカメラ位置になります。
Cameraの位置の調整にはSpring ArmのTarget Arm Lengthの数値を調整します。
かなり上から見下ろした状態になりますね。
Spring Armの設定であるDo Collision Testはカメラに衝突判定を行うかどうか。
OFFの場合、衝突判定は行わず壁等があっても向こう側にカメラが移動します。
今回はOFFにします。
Cameraの設定では、視野角(Field Of View/FOV)設定を行えます。
今回は3人称視点ということもあり、45°を設定。
プレイヤーをマウスに追従させる [32:34~]
BP_PlayerControllerの中に入り、イベントグラフタブを表示します。
イベントグラフが見つからない場合は、左下マイブループリントにあるEventGraphをクリックして下さい。
マイブループリントがない場合は、上部タブのウィンドウのマイブループリントにチェックマークを入れてください。
最初に配置されている関数は2つ
Event Begin Play | ゲーム開始時にコールされる関数ノード |
Event Tick | 毎フレームコールされる関数ノード |
他にも右クリックから色々なノードを置くことが出来ます。
例えば動画では以下のような移動方法を設定しています。
Get Controlled Pawn | 現在のコントロール対象を取得 |
Add Movement Input | targetを移動する |
Get Actor Location | targetの位置情報を取得 |
Get Hit Result Under Cursor By Channel | カーソルの情報を取得 |
Break Hit Result | Hitの要素を分解(今回は位置情報のみ使用) |
Get Unit Direction (Vector) | Fromからtoへの方向(ベクトル)情報を取得 |
結果として、Add Movement Inputは現在のプレイヤーの位置から、カーソルの位置へ、1フレーム毎に1移動します。
《実行テスト》
まだプレイヤーポーンの設定がありませんが、ゲーム的に面白いことが出来そう。
このままではプレイ中に画面をクリックするとカーソルが消えてしまうのでShow Mouse Cursorにチェックをいれるとプレイ中にマウスカーソルが消えることがなくなります。
プレイヤーをクリック場所に移動(前半) [35:19~]
動画では「プロジェクト設定」のエンジン>インプットでアクションマッピングを使用していますが現在では非推奨ということで、「Enhanced Inputアクション」「入力マッピング コンテキスト」を使うとのこと。
非推奨とかかれてますが、そもそも選択できなくなっています。
チュートリアル動画を勉強するために、Enhanced Inputの勉強をすることに。
実は前段落と日付が変わってます。
動画とは直接関係がないので番外とします。
番外ですが、動画でこの先に進むにはEnhanced Inputの習得は必須。
この記事はここまで進めてから投稿したんですねぇ…
キー入力に関しては上記の番外編で導入でききるようになったので戻ってきました。
詳しい説明は上の記事の方に任せて、キー入力に関してはサードパーソンテンプレートのものを流用します。
素材と同じく「移行」で持ってきたいところでしたが、IMC_Defaultの設定が上手く移行できなかったので、復習がてら手打ちで作成。
作成したのはサードパーソンテンプレートと同じもの。
アクション設定
入力マッピングコンテキスト
イベントグラフ詳細 ※ほとんどコピペ
BP_Botのイベントグラフ
今回はBP_PlayerControllerで動作の処理を行っていますが、流用元がPawn(BP_ThirdPersonCharacter)なので、BP_Botに記述しています。
ジャンプ/移動/カメラの処理はなくてもいいですが、入力情報取得初期設定(一番上のもの)はこの後の処理に必須。
プレイヤーをクリック場所に移動(後半)
Unreal Engine 5.1移行ではEnhanced Inputで処理を行う必要があるので、動画とは少し処理が異なりますが似た動作を実装していきます。
① 入力アクション作成
適当なフォルダで右クリックメニューから「入力アクション」を作成します。
名前はIA_MouseClickにしました。
中の設定は変えなくてもいいのですが、今後のことを考えてTriggersに「Pressed」「Released」のエレメントを追加しました。
Triggerエレメントを追加する場所は覚えておきましょう。
②入力マッピングコンテキストにIA_MouseClickを登録
番外で作ったIMC_Defaultに追加。
設定は変更せずに問題ありません。
入力アクションからのトリガーはIA_MouseClickに追加した場合のみ記載されますがなくても大丈夫です。
③BP_PlayerControllerのイベントグラフ編集 [35:55~]
基本的には動画と同じ要領で大丈夫ですが、最初に呼ぶ関数がEnhanced Action Events IA_MouseClickに変更されてる点に注意。
AddmovementというBoolean形の変数を作成し、クリックされた時(Triggerd)にTrueを設定し、クリックが終わった時(Completed)にFaulseを設定しています。
「プレイヤーをマウスに追従させる」で作成したEvent Tick処理の最初にBranchノードを作成して、AddmovementがTrueの場合のみマウス追従の処理が動くようにします。
Get Addmovement/Set Addmovementのノードは作成したAddmovementをイベントグラフにD&Dすると作成できます。
テスト実行してみると、クリックした場所にPawnが移動するようになっているはずです。
もしジャンプ/移動の処理も組み込んでいれば、WASDでの移動とスペースでのジャンプも可能になっています。
キャラクターのセットアップ
アセット入手 [37:08~]
Characterフォルダを作成し、インポート
SKM_Antbot.fbxは前回Crateを作った時に解凍してできたFirstGameInUE5_Sourceフォルダに入っています。
Create Physics Assetのチェックを外す(動画とは位置が異なっていました)。
それ以外は変更せずに「インポート」
名前エラーが出て、SKM_BotがSKM_Bot1に変更されたとのこと。
これは私のフォルダ構成が悪かったせいかもしれないので、エラーが出なかった方は私のSKM_Bot1はSKM_Botと読み替えてください。
もう一つは「FBXシーンにスムージンググループ情報がない」とのこと。
こちらは詳細不明ですが、とりあえずこのまま進めます。
SKM_Antbot_Skeletonを開きます。
色がついてないので、M_BotBaseを編集しましょう。
まず、残りのファイルをインポート
M_BotBase編集 [38:33~]
動画と同じように進めてください。
順番は異なりますが、図の説明をすると
①T_Antbot_Albedoを配置(左上)し、最初からあるVectorとBlend_Overlayの結果をLerp(A)へ
②Vector Param(暗灰色)をLerp(B)へ
③T_Bot_Masksを配置(中央左)し、GピンをLerp(Alpha)へ
④Lerpをベースカラーへ
⑤T_Bot_MasksのRピンをMultiplyへ
⑥T_Antbot_M_R_AOを配置(中央)し、RピンをMetallicへ
⑦T_Antbot_M_R_AOのGピンをラフネスへ
⑧T_Antbot_M_R_AOのBピンをピクセル深度オフセットへ
⑨Vector Param(明るい青)からMultiplyへ
⑩Multiplyをエミッシブカラーへ
⑪T_Antbot_Normalを配置(下)し、RGBピンをNormal(法線)へ
※LerpはL+左クリック、Vector Paramは3+左クリック
MI_BotFace編集 [41:10~]
①プレビュー画面を球体からキューブ型に変更
②T_Antbot_Face_Cを配置(上)し、Add(A)へ
③T_Antbot_Atlas_Eyesを配置(中央)し、Multiply(A)へ
④最初に配置してあるVectorParamの色を明るい青に変更し、Multiply(B)へ
⑤MultiplyからAdd(B)へ
⑥Multiplyからエミッシブカラーへ
⑦FlipBookを配置しUVsピンをT_Antbot_Atlas_EyesのUVsピンへ
⑧ScalarParam(0)を配置し、FlipBookのAnimation Phase(0-1)ピンへ
⑨ScalarParam(4)を配置し、FlipBookのNumber of Rows
※ScalarParamはSキー+左クリックで配置可能
⑧のScalarParam数値を変化させると表情が変わる。
0 | 0.1 | 0.2 | 0.3 | 0.4 |
0.8 | 0.9 | 0.95 |
⑧を設定しない場合アニメーション表示に。
プレイヤーキャラクターとしてSKM_Antbotを登録 [43:05~]
BP_Botを開き、Skeletal Mesh AssetをSKM_Antbotに変更。
Meshを選択し位置・回転を調整
Capsule Componentを選択しカブセルの大きさを調整
Character Movementを選択し、Orient Rotation to Movementにチェック
回転速度(Rotation Rate)を設定
この時点でテストプレイしてみると、カメラがカクカクして上手くいかない
カクカクして上手く回転してくれない場合
どこかで設定をいじってしまった可能性があるので、畳んで解説。
BP_Bot(self)のUse Controller Rotation Yawにチェックが入っていたのが原因でした。
同様の現象が発生した場合はチェックを外してください。
SpringArmを選択し、位置(相対)⇒絶対位置(ワールド)へ
絶対位置に変えて上手くいかない場合
私の場合は上手くいきませんでした。
この辺りはEnhanced Inputの所為なのか、気づかず何か変な設定してしまってるのか(不安)。
SpringArmの位置は相対(位置)に戻します。
SpringArmのカメラセッティングのUse Pawn Control Rotationにチェックを入れ、
その下のInherit Pitch、Inherit Yaw、Inherit Rollのチェックは全て外す。
あとの3項目に関しては、カメラ追従性を持たせたい場合は確認しながらチェックを入れたりしてもいいですが、今回は全てノーチェックで。
これで近い挙動になると思います。
ちなみに上(番外)でWASD移動を可能にしていた場合、WASDはワールドの方角から算定される方向になっています。
本来はカメラ位置を調整すべきかもしれませんが、おそらくこの後WASD移動も実装すると思うので今回はこのまま進みます。
プレイヤーキャラクターの挙動の調整 [44:40~]
BP_BotのCharacter Movementの詳細パネルで調整
全部は多すぎるので、動画で調整してる項目だけピックアップ
Max Accelation:加速度 500
Max Step Height:上方向への移動許容値 60
Walkable Floor Angle:歩行可能傾斜角 60
Ground Friction:地面摩擦係数 0
Max Walk Speed:歩行速度 400
Branking Deceleration Walking:減速度 800
キャラクターアニメーション
アニメーション素材のインポート[45:22~]
Animetionsフォルダを作り、Charaterと同じようにFirstGameInUE5_Sourceフォルダから3ファイルともインポート。
SkeltonはSKM_Antbot_Skeltonを選択
Import Meshはチェックを外す
全てインポート
インポートした3つのファイルのどれかを開くとキャラクターのアニメーションが表示されます。
右下のアセットブラウザで3種類のアニメーションを選択可能。
アニメーションブループリントとMeshを紐づける [46:11~]
コンテンツブラウザに戻り、アニメーションブループリントを作成。
SKM_Antbot_SkeletonのアニメーションBP(ABP_Bot)を作成します。
ABP_Botを開いて、アセットブラウザからA_Antibot_IdleをAnimeGraphにD&DしてOutputPoseと接続。
上タブからコンパイル。
BP_BotのMeshにAnim Class(ABP_Bot)を登録。
ここでPawnのブループリントと、アニメーションブループリントが紐づいています。
実行すると、紐づいたABP_Botに基づいてIdle状態で動き回ります(Idleだと分かりづらいですが)。
アニメーションブループリントのコーディング [47:08~]
アニメーションBP(ABP_Bot)を以下のようにコーディングしていきます。
基本的に動画と同じ流れで進めていくことをオススメしますが少しだけ順序を入れ替えています。
EventGraph
Pawnの移動速度をGround Speed変数に格納する処理。
毎フレーム動く処理なので、書き換えることで他の判定にも使えます。
完成図
Event Blueprint Update Animation | 初期から配置済 フレーム毎に実行(Tickに近い挙動) DeltaTimeXは最終更新されてからの経過時間 |
Try Get Pawn Owner | 初期から配置済 アニメーションに紐づいているPawnを取得 |
Is Valid | Try Get Pawn OwnerからPawn情報を取得できたかチェック |
Get Velocity | Pawnに紐づけられたMovementComponentの速度 (cm/s (Unreal Units/秒) 単位)情報を取得 |
Vector Length XY | 速度情報(vector型)を長さに変換 XY軸の平面距離が対象 |
Promote to Variable | 変数エリア(Float)を作成し、引き渡された値をセットする。 既に作成されている変数の場合はSet XXXX |
AnimGraph
State machineノードを設置し、Locomotionと名前を付ける。
Output Poseと接続。
動画ではAdd New State Machineですが
v5.3.2ではState Machineとなります
State Machine(Locomotion)
Locomotionには詳細のアニメーショングラフか、AnimeGraphには位置したノードをダブルクリックして入る。
この後作成するノードへの移行も同様の方法になります。
完成図
IdleやWalk/Runといったステートノードは右クリック⇒ステートを追加で設置。
アローはノードの淵をドラッグしながら引っ張る。
Idle(ステート)
Output Animation Poseは最初から配置されているので、対象のアニメーション(A_Antbot_Idle)を右下のアセットブラウザからD&Dしてピンを繋げてください。
動画では説明されてない(デフォルト値が異なる?)ですが、詳細パネルのLoop Animationにチェックをいれないとアニーメーションがループしてくれないので注意。
ブレンドスペースファイル作成
コーディングの前にブレンドスペースファイルを作成。
ブレンドスペース1Dの選択場所が動画とは異なり左記の場所に。
レガシーのエリアに移動されているので今後非推奨になる可能性がありそうですが、現状まだ使えたので今回は動画の通りに進めていきます。
・下エリア
アセットブラウザ(右下)からA_Anbot_WalkとA_Anbot_runをD&Dすることで、アニメーションをブレンドできる。
プレビュー画面はXマークのものが再生されているので、Ctlで×マークを移動して確認。
・アセット詳細(左側パネル)
動画で変更した場所は以下。
Walk/Run(ステート)
EventGraphで設定したGround Speedに基づいて、BS_WalkRunで設定されたアニメーションで歩き/走りを行う。
こちらは大丈夫だったと思いますが、設定のLoopのチェックも念のため確認。
Idle to Walk/Run・Walk/Run to Idle
ステートを繋げると自動で生成される遷移条件
Idle to Walk/Run
現在のステートがIdleの時に、Ground Speedが0より高くなったら遷移
Walk/Run to Idle
現在のステートがWal/Runの時にGround Speedが5より下がったら遷移。
0~5の範囲でグルグルしそうですが、5にする意味が何かあるのでしょう。
AI移動の基本 [52:30~]
新規ブループリントとしてAIControllerクラスで作成し、BP_AIControllerと名前を変更。
BP_AIControllerのイベントグラフ
Event BeginPlay | 開始時に起動 |
Set Timer by Event | Timeに設定された時間が経過すると、Eventへ信号を発生 Looping(True)が設定された場合は繰り返す |
Add custom Event | moveと命名したカスタムイベント 赤ワイヤーをトリガーに、白ワイヤーを起動 名称は自分が分かればよい |
Get Controlled Pawn | コントロールされているPawnを取得 |
AI moveTo | Pawnを指定の位置まで障害物を回避しながら移動させる。 |
ビューポート画面に、BP_Botを配置(コンテンツブラウザからD&D)し、詳細画面のAI Controller ClassにBP_AIControllerを設定。
ナビメッシュ バウンズ ボリューム(Nav Mesh Bounds Volume)を配置するには、プロジェクトに迅速に配置(キューブ+アイコン)で検索します。
カタカナ検索であればすぐに出てきますが、英語検索はアクタを配置画面まで行かないと検索に出てきません。
配置後にアクタ選択しながらPを押すと、詳細なデータ表示。
範囲を変えたい場合は、(スペースキーで)拡大縮小モードに変えて動かすか、詳細パネルの拡大縮小の数値を変更します。
Pawn毎に色を変更する [54:24~]
AIから少し横道にそれます。
今回はプレイヤーキャラであり、上でAIで動かしたBP_BotのPawnを対象にします。
BP_BotのConstruction Script
Mesh | コンポーネントのMeshをD&D |
Create Dynamic Material Instance | マテリアルをインスタンス化する これにより動的にパラメータを変化させることが可能になる |
Set Vector Parameter Value | Set Vector Parameter Valueには2種類あるので呼び出し先注意 マテリアルインスタンスダイナミックのVector Parameter値を設定 |
Color | 変数 |
Set Vector Parameter ValueのParameter NameであるColorはマテリアル(M_BotBase)に記載されているパラメーター名と紐づいている。
動画では同名で設定しているが、変数のColorはまた別もの(多分)
詳細パネルの表示の目のマークを開けると
ビューポート画面で配置したインスタンス毎にColorの設定値を変更できるようになる
Pawnを配置した後に、インスタンス毎の変更で色を変えればデフォルトの色とは異なる色のPawnが作成できる
スポーン設定とオーブ収集
オーブアクタを動的にスポーン [55:45~]
FirstGameInUE5_Source\Propsにある以下のファイルを全てインポートしますが
SM_Door.FBX
SM_Modular_WallDoor.FBX
SM_Pickup_Orb.FBX
SM_PressurePlate_Frame.FBX
SM_PressurePlate_Platform.FBX
ブループリント(Actor)を作成し、BP_Orbとします。
BP_Orb
BP_OrbのコンポーネントにSM_Pickup_OrbをD&Dで追加。
DefaultSheneRootの上にD&Dしてルート下に移動。
SM_Pickup_Orb
詳細パネルのコリジョンプリセットにOverlapOnlyPawnを設定。
Spawn Orbの入力キーを設定(ENTER)
キー入力に関してはEnhanced Input方式なので動画とは異なります。
作成方法の詳細は上で既に記載しているので、簡単に設定のみ。
入力アクション(IA_Orb)作成
IMC_Defaultファイルに登録。
スペースキーはjumpで使っていたのでenterキーに。
BP_PlayerController
Enhanced Inputで作成しているので、動画とは少し異なります。
Enhanced Action Events IA_orb | XXXXは入力アクションとして作成したもの。 |
Do Once | Resetされるまで、1回だけ次のノードが進行する。 |
Get Controlled Pawn | コントロールされているPawnを取得 |
Get Actor Location | targetの位置情報を取得 |
Spawn Actor from Class | 指定されたクラス(BP_Orb)のアクタを指定された位置/回転/大きさでスポーン |
ENTERキーを押すとorbが出現するように。
プレイヤーが作成したorbをAIPawnで集める [57:55~]
BP_AIController(Find Orb関数)
Orbアクタを探索する関数
マイブループリントの関数追加(+)からFindOrb関数を新規作成。
Get All Actors Of Class | 指定されたクラス(BP_Orb)のアクタを全て取得 |
Get(a copy) | 取得したアクタ群のうち最初の1つのコピーを取得 |
Length | 取得したアクタ群の長さを取得 |
Greater | 引数が指定した数(0)より大きいかチェック |
Branch | ConditionのTrue/Falseを判定 |
Add Return Node | 関数の終了処理 返り値はSuccess(Boolean)とOrbActor(Actor) |
BP_AIController(イベントグラフ)
Orbアクタに向かって移動する
上で作ったものをFindOrbによる探索処理に変更したもの。
Event BeginPlay | 開始時に起動 |
Set Timer by Event | Timeに設定された時間が経過すると、Eventへ信号を発生 Looping(True)が設定された場合は繰り返す |
Add custom Event | moveと命名したカスタムイベント 赤ワイヤーをトリガーに、白ワイヤーを起動 名称は自分が分かればよい |
FindOrb | 作成した関数 |
AI moveTo | Pawnを指定の位置まで障害物を回避しながら移動させる。 |
Move | 関数呼び出し |
BP_Orb
プレイヤー以外のPawnがオーバーラップした時に破壊する。
On Component Begin Overlap | BP_Orbが他のアクタとオーバーラップした時に動く |
Cast To Pawn | Orbに接触したPawnの判定に使用 |
Is Player Controlled | プレイヤーにコントロールされているかの判定 |
Branch | プレイヤーにコントロールされているかの判定 |
Destroy Actor | 判定に使用されたオーブインスタンスを破壊 |
プレイヤーが置いたORBをAIが拾う
プレイヤーが置いていったOrbを置いた順に取って回るAIPawnが出来上がりました。
Your First Game In Unreal Engine5の解説 第2回を終えて
今回はこの辺りで。
動画的には61分/83分ということで、次回で何とか終わりそうでしょうか。
今回はやっとプログラム的な部分に入ることができて面白かったです。
ただキー入力に関しては現在は動画の方法がとれず、Enhanced Inputの方式を勉強する必要がありました。
アニメーションに関してはもらったアセットをセットしていくだけという感じでしたが実はループチェック忘れ(私の環境だと初期設定OFF)で途中で動作が止まってしまうというアクシデントも。
Orbを回収するというAIはかなり勉強になりました!
特にGet All Actors Of Class関係の処理は敵の攻撃ルーチンとか、被弾判定等にも応用できそうですね。
動画ではさらっと進んでしまって、関数名とか見逃したりしちゃうので後で自分の見返し用に作った記事ですが、他の方の役に立ったら嬉しいです。
コメント