夏休み特別UE4授業Day2 「ゲーム構築基礎」ロブグレイ
https://www.youtube.com/watch?v=1UpSyGfd8lw
上記についてとても勉強になるし実際にゲームがひと通り作れるので楽しい動画なのですが
ちょっと見なおそうとすると長すぎで、後からここ確認したいということが難しかったので纏めてみました。
Day1は纏めていません。動画視聴が前提なので余計な説明は省いています。
内容について
ThirdPerson視点のゲームを作ります。
敵の攻撃を避けてゴールを目指すという内容のゲームになります。
BruePrintの内容を纏めてみました。
初期設定
新規プロジェクト設定からThirpersonを選択
Healthの表示
まずは画面に体力としてプログレスバーを表示します。
その前に体力を記録する変数Healthを追加します。
変数の追加対象はPalyerに当たるThirdPersonCharacterです
ダメージ処理としてAnyDamageイベントを受けたらHealthから減算して0以下なら「Death!!!」表示を行う
UMG ディレクトリの作成 blueprint作成
ウィジェットblueprintからplayerUI作成
progressbarの配置
バインディングの作成
バインディング先の作成の前に
プレイヤーの情報を読み込むために変数化を行う処理として
Construct側の設定
プレイヤーのインスタンスを変数に保存
バインディングの処理に先ほどの変数を代入。デフォルト値と割ることで0~1の値の範囲に調整
動画にはないですがデフォルト値を扱うためにget class default
を使いました。
UIの表示
ThirdPersonGameModeをクリック
->blueprintを開くにする
beginPlay-> create
ウィジェットを作成
-> PlayerUIを選択
-> add to viewportで表示する
敵の作成
Blueprints/Tower Actorを作る
スケルタルメッシュ2つで構成base,head
変数を追加 高さ(Float)
コンストラクションスクリプトの内容は以下のとおり
高さの変更と比率の変更でそれぞれの使う関数が違う点に注意
敵の頭の動き
頭の動き決定するプレイヤーの位置と頭の位置から向きを算出する関数がある
弾(tower用)の作成
ActorクラスからTowerBulletを作成
コンポーネントの構成は
Sphereコリジョン
Sphere -> no colisionに設定する
マテリアルはM_tech_Hex_puluseを設定
便利なコンポーネントを使用する
projectile movementを使うとたまのように飛んで行く
詳細で動きを設定
init speed =1500
shoud bounce をチェックする
Sphereコリジョンがrootになるようにドラッグ
SphereコリジョンのコリジョンプリセットはBlockAllに
弾を発射するように調整する
Towerブループリントに戻る
コンポーネントにArrow(Utility)を追加しHeadの子に設定(ドラックで親子関係を設定)
Arrowの位置を調整する(図のように)
Arrow -> ShootStartにリネーム
カスタムイベントの追加(Shoot)
玉を打つイベントを独自に定義した。
spawn actorを実行 -> TowerBulletを選択
(似たような名前の項目があって迷いましたので注意)
カスタムイベントShootの呼び出し
setTimerで呼び出し処理のついか
ShootTime変数の追加編集可能にしてVector2dにする
2dにしてronadom rangeの最小値最大値として割当てる
Tower弾がプレイヤーにあたった場合の処理
Sphereコリジョンコンポーネントを選び詳細画面にてイベントのOnComponentHitを選択
OnComponentHitイベントが作成されるので処理を記述する
移動する敵の作成
BluePrint Characerの作成(bot)
移動するのでActorはダメ
最初から移動用のコンポーネントが用意されている。(CharacterMovement)
スタティックメッシュを足す
アタック半径用のコリジョンを追加しておく
コンストラクションでAttack半径を設定できる用にする
追いかける動作の設定
Chase Eventを作成する
処理は以下のとおり。呼び出しも追加する
AIを動かすためにはナビゲーションマップが必要
Navi Mesh Bound volumeを全体に適用
Viewからpキーで適用範囲は確認できます
追いついたら止まってしまう問題
もう一度chaseを呼び出す。
今回は爆発して消滅予定なので入れない。
プレイヤーにぶつかったら爆発するように
On component hitイベントに処理を追加する
怒らせる表現
Matirialの作成(M_Bot)
3を押しながら左クリックでRGB追加
Matから変化するためのパラメーターを作っておく(Angry)
BPから適用
追いかける処理に追加
GameOverUIの作成
UMG/GameOverUIの作成
GameOver表示
Restartボタンの表示
Button -> onClick Eventの作成
リスタートするように設定
GameOver処理
GameModeブループリント
GameOver カスタムイベントの作成引数にデッドを追加
Deathイベントの作成
GameOverUI表示時にUIのマウス操作ができるように調整
Goalの設定
Actorの作成 Goal
Boxコリジョン
テキストレンダー
ここで力尽きました。後で追記します。