高機能なゲームエンジンであるUnreal Engineは無料で簡単に始めることができます。
インストールの仕方などは以前の記事をどうぞ。
前回の続きで、First PersonのBPを学びました。
ドアに近づいたとき、特定のボタンを押すとドアの開け閉めができるブループリントを作成しました。今回はInterfaceを使用しています。
参考動画
ゲームデザイナーのためのブループリントとゲームプレイ>ブループリントインターフェースを使って開く
1.Googleで検索する。そして画像の手順にすすめる。
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-29.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-26.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-25.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-27.jpg)
2.左のウィジェットからコンテンツライブラリを選ぶ。
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-27.png)
3.中央にある検索窓から見たい動画を検索。
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-28.png)
4.動画を見る。
今回はEpicから配布されている[Blueprints and Gameplay In Development]というプロジェクトを使って学習しています。
1.Unreal engineのサイトのトップバーから、PERSONALを選ぶ。
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-47.png)
(まずサイト右上のIDにカーソルを合わせる)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-34.png)
(PERSONALを選ぶ)
2.REDEEM CODE(コードの利用)を選ぶ。
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-35.png)
3.次のコードを入力して、REDEEM(コードを利用)をクリック。
QJG79-UKK5K-AYW97-8VE4D
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-36.png)
4.COMFIRM(確認)をクリック。
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-37.png)
学習内容
![](https://japanese-rooster.com/wp-content/uploads/2021/07/brett-jordan-Fp4ERdkR5jU-unsplash-1024x768.jpg)
覚えること
「実装されたインターフェイス」という意味。たぶん。
Implement
意味
名詞:道具
動詞(他動詞):…に道具(手段)を与える、(プログラムに機能を)実装する
発音:ímpləmənt
Interface
意味
名詞:接点、接点となるプログラム
(関連)
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-234.png)
BPのエッジは、伝えている情報の種類によって色分けしているようです。現時点で理解している内容をまとめました。
白色:順番(左から順に実行)
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-21.png)
水色:リファレンス
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-14.png)
黄緑:float(浮動小数点数)
青色:色
赤色:boolean(ブール値)
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-22.png)
黄色:ベクトル
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-17.png)
意味:存続
(関連)
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-26.png)
“For Duration”で、「しばらくの間」という意味だと理解。デバッグの線がしばらくしたら消えるから。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-29.png)
“Persistent”(しつこい、持続性の)にすると、デバッグの線が消えずにずっと残っていた。
学んだこと
コンテンツブラウザから、[Content]>[Blueprints]>[FirstPersonTemplate]と選び、そのフォルダ内で右クリックをして[Blueprint Interface]を作成する。名前は[BPI_Interaction]とする。
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-225.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-226.png)
コンテンツブラウザから[Content]>[Blueprints]>[Doors]と選び、フォルダ内の[BP_Door_Parent]を右クリックする。[Create Child Blueprint Class]を選び、子BPとして[BPC_Door_Interface]をつくる。
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-231.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-229.png)
場所:BPI_Interaction
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-230.png)
右上にある[My Blueprint]パネルで、[Interact]という関数を作る。今回はもともと[Tutorial Sample Function]という名前の関数があったので、名前を変更した。
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-227.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-228.png)
場所:BPC_Door_Interface
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-232.png)
上のツールバーから、[Class Settings]を選ぶ。
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-233.png)
右のDetailsパネルから[Interfaces]>[Implemented Interfaces]から[Add]をクリック、[BPI_Interaction]を選ぶ。
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-234.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/09/image-235.png)
左の[My Blueprint]パネルにある[Interact]を右クリックして、[Implement event]を選ぶ。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-1.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-2.png)
[Event Interact]から[Flip Flop]を作成。その後、Aから[Open Door]を、Bから[Close Door]を作成。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-3.png)
場所:BP_First Person Character
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-4.png)
[Input Action Interact]のノードを作成する。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-5.png)
[Input Action Interact]から[Sphere Trace By Channel]を作成する。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-7.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-8.png)
[First Person Camera]をGetして、[Get World Location]を作成。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-9.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-10.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-11.png)
[Get World Location]の[Return Value]を、[Sphere Trace By Channel]の[Start]とつなぐ。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-12.png)
[First Person Camera]から[Get Forward Vector]をつくる。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-13.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-14.png)
[Get Forward Vector]から[vector * float]を作成。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-15.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-16.png)
[Get World Location]から[vector + vector]を作成。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-17.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-18.png)
[vector + vector]を下の画像のように接続する。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-20.png)
[vector * float]の[float]を500にする。
(Unreal engine内の値は1=1cmのことらしい。したがって、500は5mを表す。)
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-23.png)
[Sphere Trace By Channel]の[Radius]を2,[Draw Debug Type]を[For Duration]にする。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-26.png)
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-30.png)
Eボタンを押すと、カメラの前方5m先に半径2㎝(radius=2)の円が、しばらく(For Duration)できる。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-41.png)
Eボタンを押したとき当たり判定(Collision)のあるオブジェクトが前方にあると、トレースがブロックされて(ヒットして)緑色の円ができる。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-40.png)
ヒットすると緑、ヒットしなければ赤色のみ。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-39.png)
[Out Hit]から[Break Hit Result]を作る。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-27.png)
[Blocking Hit]から[Branch]を作り、つなげる。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-28.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-31.png)
[Break Hit Result]の三角ボタンをクリックし、出てきた[Hit Actor]から[Does Implement Interface]を作成する。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-32.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-33.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-34.png)
[Interface]を[BPI_Interaction]に変更する。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-35.png)
もう一つブランチを作り接続する。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-36.png)
[Hit Actor]から[Interact(Message)]を作り、接続する。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-37.png)
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-38.png)
[BPI_Interface]を実装しているオブジェクトにヒットすると、[Event Interact]が実行される。このドアの場合は開閉する。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-3.png)
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-39.jpg)
このドアのフレームに向けてEボタンを押すと、ヒットしてドアが開閉する。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-39-1.jpg)
ドア自体にEボタンを押してもヒットしない。これはドア自体にCollisionがないからである。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-39-2.jpg)
このままだと良くないので、ドアにCollisionをつける。
場所:BP_Door_ParentのViewport
まずDetailsパネルの[Collision]を確認する。[Collision Presets]を見てみると、[Block All Dynamic](全てブロック)となっているが、正常にブロックしていない。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-47.png)
↓詳細
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-48.png)
Detailsパネルの[Static Mesh]で、[SM_Door]の画像をダブルクリックすると、新しいウィンドウが開く。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-49.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-50-1024x574.jpg)
上のメニューバーで[Simple Collision]を選択する。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-50.png)
↓
特に変化しない。これはドア自体にCollisionがないことを示す。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-52.png)
ドアフレームで同様のことをすると、緑色の枠ができる。これはドアフレームがCollisionを持っていることを示している。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-51.png)
[Add Box Simplified Collision]を選ぶと、Collisionが簡単にできる。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-53.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-55.jpg)
もっと複雑な物体なら、[Auto Convex Collision]が便利らしい。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-54.png)
場所:BPI_FirstPersonCharacterのEvent Graph
[Sphere Trace By Channel]の[Draw Debug Type]を[None]にする。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-55.png)
[Interact Event – BPI_Interface]とコメントしておく。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-56-1024x361.png)
試したこと
新しいブループリントを作って、適当に名前をつける。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-45.png)
↓
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-46.png)
Static Meshとして椅子を選択。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-43.png)
[Class Setting]で[Implemented Interfaces]として[BPI_Interaction]を追加。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-44.png)
[Event Interact]を作成。
![](https://japanese-rooster.com/wp-content/uploads/2021/10/image-42.png)
椅子に向かってEボタンを押すと、椅子が回る。もう一度押すと回転が止まる。
Interfaceを使用するためのBPを使いまわせるのが便利。Interfaceを実装して、Eventを作るだけで良い。
(参考)
コメント