LoginSignup
2
1

More than 5 years have passed since last update.

夏休み特別UE4授業Day2 Memo

Posted at

夏休み特別UE4授業Day2 「ゲーム構築基礎」ロブグレイ
https://www.youtube.com/watch?v=1UpSyGfd8lw

上記についてとても勉強になるし実際にゲームがひと通り作れるので楽しい動画なのですが
ちょっと見なおそうとすると長すぎで、後からここ確認したいということが難しかったので纏めてみました。
Day1は纏めていません。動画視聴が前提なので余計な説明は省いています。

内容について

ThirdPerson視点のゲームを作ります。
敵の攻撃を避けてゴールを目指すという内容のゲームになります。
BruePrintの内容を纏めてみました。

初期設定

新規プロジェクト設定からThirpersonを選択

setup.png

Healthの表示

まずは画面に体力としてプログレスバーを表示します。
その前に体力を記録する変数Healthを追加します。
変数の追加対象はPalyerに当たるThirdPersonCharacterです

変数を追加
Helath:Float
health.png

ダメージ処理としてAnyDamageイベントを受けたらHealthから減算して0以下なら「Death!!!」表示を行う

anyDamageEvent.png

UMG ディレクトリの作成 blueprint作成
ウィジェットblueprintからplayerUI作成

playerUI.png

progressbarの配置 
バインディングの作成

playerUI2.png

バインディング先の作成の前に
プレイヤーの情報を読み込むために変数化を行う処理として
Construct側の設定

プレイヤーのインスタンスを変数に保存

PlayerUIConstruct.png

バインディングの処理に先ほどの変数を代入。デフォルト値と割ることで0~1の値の範囲に調整
動画にはないですがデフォルト値を扱うためにget class defaultを使いました。

PlayerUI3.png

UIの表示
ThirdPersonGameModeをクリック
->blueprintを開くにする
beginPlay-> create
ウィジェットを作成
-> PlayerUIを選択
-> add to viewportで表示する

ThirdPersonGameMode.png

敵の作成

Blueprints/Tower Actorを作る

スケルタルメッシュ2つで構成base,head

変数を追加 高さ(Float)

コンストラクションスクリプトの内容は以下のとおり
高さの変更と比率の変更でそれぞれの使う関数が違う点に注意

TowerConstraction.png

敵の頭の動き

頭の動き決定するプレイヤーの位置と頭の位置から向きを算出する関数がある
TowerHeadRotation.png

弾(tower用)の作成

ActorクラスからTowerBulletを作成
コンポーネントの構成は
Sphereコリジョン
Sphere -> no colisionに設定する
マテリアルはM_tech_Hex_puluseを設定

便利なコンポーネントを使用する
projectile movementを使うとたまのように飛んで行く
詳細で動きを設定
init speed =1500
shoud bounce をチェックする
TowerBullet_ProjectileMovement_setting.png

Sphereコリジョンがrootになるようにドラッグ
SphereコリジョンのコリジョンプリセットはBlockAllに

 弾を発射するように調整する

Towerブループリントに戻る
コンポーネントにArrow(Utility)を追加しHeadの子に設定(ドラックで親子関係を設定)
Arrowの位置を調整する(図のように)
Arrow -> ShootStartにリネーム
TowerHeadArrow.png

カスタムイベントの追加(Shoot)
玉を打つイベントを独自に定義した。

spawn actorを実行 -> TowerBulletを選択
(似たような名前の項目があって迷いましたので注意)
TowerShoot.png

カスタムイベントShootの呼び出し

setTimerで呼び出し処理のついか
ShootTime変数の追加編集可能にしてVector2dにする
2dにしてronadom rangeの最小値最大値として割当てる

shootTrigerSetting.png

Tower弾がプレイヤーにあたった場合の処理

Sphereコリジョンコンポーネントを選び詳細画面にてイベントのOnComponentHitを選択
OnComponentHitイベントが作成されるので処理を記述する
TowerBulletHitPlayer.png

移動する敵の作成

BluePrint Characerの作成(bot)
移動するのでActorはダメ
最初から移動用のコンポーネントが用意されている。(CharacterMovement)
スタティックメッシュを足す

アタック半径用のコリジョンを追加しておく
コンストラクションでAttack半径を設定できる用にする
BotSetAttackRadius.png

追いかける動作の設定

Chase Eventを作成する
処理は以下のとおり。呼び出しも追加する

BotChase.png

AIを動かすためにはナビゲーションマップが必要
Navi Mesh Bound volumeを全体に適用
Viewからpキーで適用範囲は確認できます

navigationMap.png

追いついたら止まってしまう問題

もう一度chaseを呼び出す。
今回は爆発して消滅予定なので入れない。

プレイヤーにぶつかったら爆発するように

On component hitイベントに処理を追加する

Bot2PlayerAttack.png

怒らせる表現

Matirialの作成(M_Bot)

3を押しながら左クリックでRGB追加

Matから変化するためのパラメーターを作っておく(Angry)
M_Bot_Material.png

Botへマテリアルの適用
MatAssignBot.png

BPから適用

コンストラクションに追加
BotConstruct2.png

追いかける処理に追加

BotChase2.png

GameOverUIの作成

UMG/GameOverUIの作成
GameOver表示
Restartボタンの表示

Button -> onClick Eventの作成
リスタートするように設定
GameOverUIRestart.png

GameOver処理

GameModeブループリント

GameOver カスタムイベントの作成引数にデッドを追加

Deathイベントの作成

Deathカスタムイベントの作成
ThirdPersonGameModeGameOver.png

GameOverの呼び出し
ThirdPersonCharacterDeath.png

Heath処理の最後にDeathイベント呼び出し
ThirdPersonCharacter_Heath2.png

GameOverUI表示時にUIのマウス操作ができるように調整

GameOverUIMouseControll.png

Goalの設定

Actorの作成 Goal

Boxコリジョン
テキストレンダー

ここで力尽きました。後で追記します。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1