関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2021.04.14UE4UE/ 初心者向け
執筆バージョン: Unreal Engine 4.26 |
皆さんこんにちは!株式会社ヒストリア新人ゲームデザイナーの黒田Rです。
最近になって初めて、Tキーを押すことで半透明のメッシュを選択可能にできることを知りました….
今回は、そんな私でも簡単に理解できたドアブループリントの作成方法をご紹介します。
現実世界だと「自動ドアの方がハイテク!」という認識がありますが、
Unrealでは手動ドアの方が少し難しいです。(インプット情報が多いため)
まず、新しいアクターのブループリントを作成します
(名前はわかりやすいようにBP_Doorで作成しています)
作成したブループリントに名前を付けて保存したら、ダブルクリックで中を開きます。
左上の「+Add Component」から「Static Mesh」を追加し、
ドアのメッシュを設定します。
(名前はわかりやすくDoorにしています)
次に、「+Add Component」から「Box Collision」を追加し、
ドアを開けるキーを押したときにドアを開けられる範囲を設定します。
2つのコンポーネントを追加したら「Event Graph」に移り、判定の設定をしていきます!
※最初に「Event Graph」を開いた時にある3つのノードは使用しないので削除しても大丈夫です。
まず、追加したBox Collisionを右クリックし2つのイベントを追加します:
追加したイベントの「Other Actor」からノードを引っ張り、
「Cast To FirstPersonCharacter」に繋げます。
(プレイヤーだけが判定対象になります)
さらに、下記イベントを追加しノードを繋ぎます:
これによって、プレイヤーがボックス内にいる間しか、特定の入力ができなくなりました!
次に、ドアを開くための入力キーを設定します。
左上の「Edit」から「Project Settings」を開き、
下記手順で入力キーを設定します:
入力キーの設定を終えたらProject Settingsを閉じ、Event Graphに戻ります。
空いているスペースを右クリックし、先ほど設定した名前のイベントを追加します。
(今回はOpenDoorで見つかるはずです)
次に、開いているスペースでGキーを押しながら左クリックを押し、
「Gate」のイベントを作成します。
「Gate」を追加したら下記のように繋げてください。
これで、プレイヤーがボックス内にいる時にのみEnterを押すことで特定のことができるようになりました!
さて、最後にドアの開閉アニメーションを設定していきます。
最初に、前のステップで追加した「Gate」のExitからノードを引っ張り、
「Flip Flop」のイベントを追加します。
(FlipFlopは、1回目に押すとAのイベントが実行され、2回目はB、3回目はまたAという風にイベントを実行してくれます)
「Flip Flop」のAからノードを引っ張り、「Timeline」を追加します。
追加したTimelineに名前を付け、「FlipFlop」のBをReverseに繋げます。
(これにより、閉じるアニメーション=開くアニメーションの逆再生という風になります)
次に作成したTimeLineをダブルクリックし、中にアニメーションを設定していきます。
中を開くとこんな感じになっています↓
「Length」の横に書いてある数字がドアを開けるアニメーションの再生時間になります。
(今回私は2秒に設定しました)
ではまず、左上の「F+」というのを押し、FloatTrackを追加します。
(追加した際に名前を設定できるのでDoor Trackで設定します)
トラックの開いているところを右クリックし「Add key to CurveFloat_0」を追加します。
追加したkeyのTimeとValueを設定します:
上記手順と同じ手順でもう1つKeyを追加し、今度は
で設定します。
これでTimelineの中身設定は完了ですので、閉じます。
Event Graphに戻り、Timelineの「Door Track」からノードを引っ張り、
「Lerp」というイベントに繋ぎます。
最初に繋いだ時はAに繋がってしまうので、Alphaに繋ぎなおします。
また、AとBは右クリックし変数に昇格させます。
(Aはドアが閉まった状態の角度なのでCloseAngle、
Bはドアが開いた状態の角度なのでOpenAngleに設定します)
ここで一度Compile+Saveします。
※↑をすることで、変数内の値を設定することができるようになります
CloseAngleの変数はドアが閉じている状態なので初期値の0で大丈夫です。
OpenAngleは開けたい角度を設定します。
(今回は手前に開くようにしたいので90と設定します)
※開く角度はViewportでドアメッシュを回転することで確認することができます。
次に、ドアのスタティックメッシュを開いているスペースにドラッグ&ドロップします。
ドアの変数からノードを引っ張り、「SetRelativeRotation」を追加します。
追加したらTimelineのUpdateとSetRelativeRotationを繋ぎます。
次にSetRelativeRotationの「New Rotation」を右クリックし、
「Split Struct Pin」を選択します。(より、詳細な回転設定ができるように)
最後に、Lerpの「Return Value」を「New Rotation Z (Yaw)」に繋げます。
Compile+Saveしたら、実際に作成したBP_Doorをステージに配置し、
Playで近づいてEnterキーを押してみましょう。
無事開きました!!!
ちゃんと閉じました!
すごくシンプルではありますが、これで「キーを押すと開くドア」が完成しました!
もっと良くするためにSEを鳴らしたり、UIを表示させたり…
などなどたくさん工夫できる箇所もあるので、是非試してみてください!