目次
はじめに
注意
UE5Preview2の現在の情報です。
今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。
前回エル●ンリングなエレベーターを作りました。
今回はレバーを作成しプレイヤーが動かせるようにします。

解説
①レバー用のブループリントの作成
コンテンツ右クリックからActorを親としたブループリントを作成。
名前をBP_ElevatorLeverにします。

②コンポーネントの追加と編集
StaticMeshコンポーネントを3つ追加します。
名前を変更しておきましょう。

それぞれスタティックメッシュと位置、マテリアルを変更します。
▼SM_Trigger


▼SM_Body

▼SM_Lever


▼最終的にこんな感じになったらOKです。

③コンポーネントの追加と編集
タイムラインでレバーが動く演出を作ります。
新規イベントPlayLeverAnimを作成します。

スイッチアニメーションのタイムラインをコピペしてLeverAnimationにリネームしたら画像のように組みます。

タイムラインにはフロートトラックをRotation_Xにリネームします。

構造体ピンを分解したRotationに画像のように組み込みます。

動作確認したいのでエディタからこのイベントを呼び出せるように変更しましょう。
イベントの詳細からエディタで呼び出すを有効にします。

レベル上に配置すると詳細のデフォルトの欄にこのイベントのボタンが出ます。
シミュレーション状態で押すとイベントの動作を確認できるのでやってみましょう。

タイムラインでレバーの速度などお好みで調整しましょう。
④インターフェースの解説と実装
1.インターフェースとは
インターフェースはアクタ間の参照を疎にする非常に強力な機能です。
特にキャラクターから別のアクタをキー入力で操作するときは使いどころです。
2.インターフェースの作成
コンテンツ右クリックからインターフェースを作成します。
名前はIF_SwitchEventです。

インターフェースの開いて関数Active/Deactiveの2種を作成します。

コンパイルしましょう。
3.インターフェースの呼び出し
BP_ThirdPersonCharacterのイベントグラフにキーイベントを作成します。
@などでキーノードを出します。

詳細からFに変更します。

インプットイベント
特定の入力に対して押したり離したりを検出するノード
コントローラーに制御されているアクタでしか使えない
BP_ThirdPersonCharacterのイベントグラフに画像のようにノードを組みます。
機能はコメントを付けているのでそちらをお読みください。
▼全体像

▼拡大



補足
・IFCallAcorはActor型です。
・CapsuleComponentはCharacterクラスが持っている変数です。

4.インターフェース呼び元の実装
BP_ElevatorLeverのクラス設定を開きます。

詳細からインターフェースを追加します。

するとマイブループリントのインターフェースの項目に作成した関数が表示されます。

Activeを右クリックしてイベントを作成します。

デバック用に作成したPlayLeverAnimを削除し代わりにこのイベントを接続します。

またDoOnceノードで遷移中の入力を除外します。

これでインターフェース経由の実装は完了です。
キャラ操作時にレバーに近づきFを入力するたびにレバーが動作すれば成功です!

次回はレバーでエレベーターを操作できるようにしましょう。
最後に
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。
