Upload
pafuhana-1213
View
12.971
Download
7
Embed Size (px)
DESCRIPTION
2014/11/1に行われた第2回 関西Unreal Engine4勉強会の 講演で使用したスライドです。 https://atnd.org/events/57368 pdfファイル https://www.dropbox.com/s/44mf3o73lbbp3v2/%E7%8C%AB%E3%81%A7%E3%82%82%E3%82%8F%E3%81%8B%E3%82%8BUE4.pdf?dl=0 pptxファイル+動画ファイルhttps://www.dropbox.com/s/i757bzkeugdzvg0/%E7%8C%AB%E3%81%A7%E3%82%82%E3%82%8F%E3%81%8B%E3%82%8BUE4.ZIP?dl=0 質問などありましたら、以下の連絡先にお願いします。 twitter: @pafuhana1213
Citation preview
おかず@pafuhana1213
第2回 関西UE4勉強会2014/11/1
スライド公開してます
1
http://www.slideshare.net/pafuhana/
unreal-engine4ue4-2014111
Twitter やってます
おかず@pafuhana1213
ブログ やってます
ぼっちプログラマのメモ
UE4 やってます
UE4歴:約6ヶ月
OculusRift やってます
社畜プログラマ やってます2
○nityちゃんが走るゲーム第1回 UE4ぷちコン
製作期間:約1週間
360度シューティングゲーム第2回 UE4ぷちコン
製作期間:約3週間
UE4でMMDしてみたアニメーションリターゲット
3
株式会社ヒストリアさん主導のUE4を用いたゲームコンテスト
動画を投稿するだけ!
景品が豪華!
次は年末らしい…
4
http://historia.co.jp/
ue4petitcon
○nityちゃんが走るゲーム第1回 UE4ぷちコン
製作期間:約1週間
360度シューティングゲーム第2回 UE4ぷちコン
製作期間:約3週間
UE4でMMDしてみたアニメーションリターゲット
大賞受賞!YATTA!
5
時間がなくても
『見た目のリッチ』なゲーム作れる!
UE4でゲーム作ろうよ!
6
これさえ覚えればゲーム作れる!
キャラクターの動かし方
コリジョン(当たり判定)
ゲームのルールづくり
いろいろ
ゲームの見た目をリッチに!
マテリアル, エフェクト
ポストプロセス
7
間違ってたら、ゴメンナサイ!間違いの指摘、疑問などありましたら、
“#UE4Study”でツイートすると反応あるかも…
8
本スライド作成時のUE4のバージョンは【4.5】です
最新版では本スライドで紹介している機能・手法は使えない可能性がありますその点、ご了承お願いします
テンプレートの中から選ぶ!以上!
9
( ‘д‘⊂彡☆))Д´) パーン
UE4のテンプレ、充実しすぎ!10
アリガトウゴザイマス!
Characterクラスで用意されているコンポーネント
ThirdPersonテンプレのMyCharacterブループリント
キャラクターを親クラスに11
12
Add Movement Input
単位方向ベクトル×大きさ(入力量)
13
14
簡単!ジャンプもあるよ!
豊富なプロパティ!
移動速度・加速度
空中・水中での制御
向きの自動設定フラグ
その他いろいろ…
コリジョンの考慮
Animation BPとの連携
迷ったらとりあえずコレ15
移動・回転命令を直接実行
CharacterMovementを介さずに
16
17
CharacterMovementの利点を全無視
用途:動く床(StaticMesh)のような簡単なBP
UE4 5分で作れてしまう動く床の作り方18
19
位置・向きのパラメータを上書き
20
21
可変フレームレート対応
ハイパー行列計算タイム あまりオススメはできない…
22
(Simple) Move to~
Navmeshによる経路探索用
UE4のNavmeshを使ってみる
Add~
Characterに紐付けたコンポーネントの操作
23
24
Sceneコンポーネントで階層構造
これで動けるようになったぞ!
25
コリジョンを使えば色んなゲームを作れる!
衝突判定 → ダメージ判定・ギミック起動
エリア内への侵入を検出
26
27
Characterのカプセル型だけでは不都合なとき
「衝突したのは横から?上?下?」の判定など
少し離れた箇所にコリジョン置きたい(バリアなど)28
29
ルゥちゃんかわいい
Block
衝突検出
Overlap
重複検出
Ignore
無視
https://docs.unrealengine.com/latest/JPN/
Engine/Physics/Collision/index.html 30
Block Overlap Ignore
球 壁 結果 イベント
Block Block A Hit
Block Overlap B Overlap
Block Ignore C Ignore
Overlap Block B Overlap
Overlap Overlap B Overlap
Overlap Ignore C Ignore
Ignore C Ignore
A B C
『衝突した』という判定が欲しいか、欲しくないか
欲しい ▶ Block 欲しくない ▶ Overlap
主に何が影響するのか?
めりこみの問題
当たり判定後の移動
32
Overlapの時
Blockの時
用途に応じて使い分けましょう
Block
Hit
Overlap
Actor Begin
Overlap
Actor End
Overlap
33
チェック付けないとイベント発生しないので注意!
34
Block :衝突毎
Overlap:重複開始・終了時
Blockの場合
ダメージ壁
衝突毎に判定くるから…
Overlapの場合
範囲内の敵にダメージを与え続けたい
開始・終了時しかイベント来ない…
35
毎フレームHitイベントが発生する可能性…
ダメージ処理のインターバルを用意すればいい
36
Hitイベント発生
前回のダメージ処理から○○秒過ぎた?
おわり
まだっす
ダメージ処理
過ぎた!
インターバルのリセット
Get Real Time Seconds:ゲーム開始からの経過時間(秒単位, Float型)
Hit Time:前回のダメージ処理を行った時の経過時間(変数, Float型)
ブランチ:
37
範囲内に対象がいることを知りたい
Overlap開始・終了時に範囲内にいる情報をON・OFFする
範囲内にいたら、毎フレーム攻撃する
38
OFF ON! ON OFF! OFF
IsOverlap:範囲内にいる情報 (変数, bool型)
OverlapActors:OverlapしたActorの保存(配列, Actor型)
コリジョンって結構ややこしい…
なぜか判定が発生したり、しなかったり…
怪しいと思ったら、各設定の確認+Print Stringやブレークポイントで確認
40
再開41
Apply Damage
当たった相手(Other)にダメージを与える
BaseDamage:与えるダメージ量 (初期値:0)
42
Any Damageイベント
Damage:受けたダメージ量
体力用変数(Life float型)を用意・管理43
Point Damage :ダメージ位置情報を付加
Radial Damage :範囲ダメージ
44
Point Damage
弱点・部位破壊
ふっ飛ばし
Radial Damage
爆弾・爆発
回復魔法
DamageType
45
Hitした相手(Other)にダメージ与える!
Otherが味方でも…?
46
あなたは誰?
誰かに当たった
味方でした
敵でした
テヘペロ
攻撃
GetDiplayName
相手の名前で判定
Cast~
クラス継承関係で判定
Actor Has Tag
タグで判定
保存していたActorと比較
アセット直選択と比較
47
タグ判定がオススメ!
複数のタグを設定することも!48
移動できます
当たり判定取れます
相手に攻撃できます
49
ゲーム作れそう…
50
時間はタイマー変数(Float型)で
管理するのが一般的
…たぶん
51
52
Teleportノードを使用
53
54
これさえ覚えればゲーム作れる!キャラクターの動かし方
コリジョン(当たり判定)
ゲームのルールづくりいろいろ
ゲームの見た目をリッチに!マテリアル, エフェクト
ポストプロセス
55
マネージャ的なBPを自作
サクッと作りたいなら…
管理が大変…存在を忘れたり…
Level BP
各ステージ・オブジェクトへの依存度が高いもの 制限時間の設定
ステージ特有のオブジェクト
Gamemode BP
ゲーム全体・各ステージで共通するもの ゲームオーバー処理など
他のBPからアクセス可能 56
各BPが持つパラメータはレベル遷移時にリセットされる…
リザルトでスコア出したいのに…
57
Game Instance
パラメータがリセットされない!
どのBPからもアクセスできる!
乱用注意!
http://unrealengine.hatenablog.com/
entry/2014/08/28/203638
UE4 レベルを跨いで値を保持するGameInstanceについて
http://unrealengine.hatenablog.com/entry/201
4/08/28/203638
58
いや、たぶん残り時間少ないですし記事分かりやすいですしまあ、その、手抜きでごめんなさい
3回見つかったら、ゲームオーバー処理
59
他のBPにイベントを通知 (処理をお願いする)
ゲームルールを管理するBPに処理をまとめることができる
60
GameOverになった!ゲームオーバー時の処理、皆よろしくー!
色んな箇所に同じ処理を書く必要がある
見落としや作成ミスなどの問題
単純にめんどくさい
対象となる処理を変更する場合↑で作成した全ての箇所で変更作業する必要がある
61
ライフ0
時間切れ
ゲームオーバー処理
ゲームオーバー処理
ライフ0
時間切れ
ゲームオーバー処理
UE4 ブループリントでイベントディスパッチャーを使う
http://unrealengine.hatenablog.com/entr
y/2014/10/20/223445
62
・・・ゴメンナサイ
DeltaSeconds(前フレームからの経過時間)を利用(Tickイベント、またはGetWorldDeletaSecond)
63
UI表示は2種類の機能があります
HUD BP
BPで表示内容を設定・管理
実装簡単・調整超面倒
UMG(Unreal Motion Graphics)
開発途中 (2014/11/1現在)
ロジックとデザインの分離
64
https://docs.unrealengine.com/latest/JPN/
Engine/UMG/UserGuide/index.html
MyCharacterが持つパラメータを参照・表示する場合
文字列の結合処理も
66
GameInstanceが持つパラメータを表示
67
データ型の変換 (プログラミング用語)
親クラスから子クラスへの移動
68
キャスト
親クラスの選択
BPシステム
Play Sound at Location
アセット直設定
設定項目
再生位置・音量・再生速度・開始時間
フェードイン・アウトなどの特殊効果は不可能…たぶん
69
Audio Component
特殊効果を使用可能
70
Attenuation(減衰)プロパティ
SEにオススメ
71
https://docs.unrealengine.com/latest/JPN/
Engine/Audio/SoundActors/index.html
これさえ覚えればゲーム作れる!キャラクターの動かし方
コリジョン(当たり判定)
ゲームのルールづくりいろいろ
ゲームの見た目をリッチに!マテリアル, エフェクト
ポストプロセス
72
シーン内のアセットは使い放題!
他プロジェクトへのアセットの移動も簡単!
http://historia.co.jp/
archives/275
勿論、勉強にもなります
73
Spawn Emitter at Location
サウンドとは異なり、実行後に設定変更可能
74
ゲーム画面に対してのフィルター処理
75
セルルック表現が今熱い!(一部で)•ポストプロセスマテリアルを使用
https://docs.unrealengine.com/latest/JPN/Engine/Rendering/PostProc
essEffects/PostProcessMaterials/index.html
•Epicの中の人(@junyashさん)のサンプルhttps://twitter.com/junyash/status/523059646282493953
Matineeデモ
76
Before After
UE4 Document@com04
http://com04.sakura.ne.jp/unreal/wiki/index.php?%A5%DD%A5%B9%A5%C8%A
5%D7%A5%ED%A5%BB%A5%B9-
%A5%DE%A5%C6%A5%EA%A5%A2%A5%EB-
Toon%A5%B7%A5%A7%A1%BC%A5%C9
77
カメラレンズの「ボケ」を再現
見た目がグッと良くなるのでオススメ
やり過ぎ注意
78
https://docs.unrealengine.com/latest/
JPN/Engine/Rendering/
PostProcessEffects
/DepthOfField/index.html
AA
ブルーム
レンズフレア
自動露光
色収差
ビネット効果
その他いろいろ
79
80
UE4の各機能を使えば、見た目のリッチなゲームをサクッと作れます
BluePrintの学習は必須
従来のプログラミング言語に比べれば、かなり簡単!
皆でUE4コミュニティを盛り上げていきましょう!
UE4 公式フォーラム
UnrealEngineユーザ助け合い所
Twitter #UE4, #UE4Study81
ご清聴頂きありがとう
ございました!82