0
0
実現したいこと
現在 VRゲームを作っており
「コントローラーを近づけてトリガー入力をするとオブジェクトごとにリアクションを起こす」
という部分を実装している最中です。
この機能を
「コントローラがコライダーに近づくたびにオブジェクトから特定のインタフェースを取得し保存。
トリガー入力すると、取得していたインタフェースの関数を発火する」
という手法で実装しています。
ただ、この実装方法だと「使わないインタフェース」だとしてもいちいち保存するため
「トリガー入力がきた瞬間にのみインタフェースを取得し発火する」方式にしたいです。
何か良い実装方法はないでしょうか。
よろしくお願いいたします。
条件
・OnTriggerEnter, OnTriggerStayは使わない
・UniRXなどの外部アセットは使用可
・できるだけパフォーマンスの良い方法でお願いいたします
該当のソースコード
C#
1using UnityEngine; 2 3public class TriggerAction : MonoBehaviour 4{ 5 //特定のインタフェース 6 private ITriggerAction _triggerAction; 7 8 private void OnTriggerEnter(Collider other) 9 { 10 //特定のインタフェースを持っているなら保存 11 if (other.gameObject.TryGetComponent<ITriggerAction>(out _triggerAction)) 12 { 13 Debug.Log("get"); 14 } 15 } 16 17 private void OnTriggerExit(Collider other) 18 { 19 if (other.gameObject.TryGetComponent<ITriggerAction>(out _triggerAction)) 20 { 21 if(_triggerAction != null) 22 { 23 //初期化 24 _triggerAction = null; 25 } 26 } 27 } 28 29 private void Start() 30 { 31 _triggerAction = null; 32 } 33 34 private void Update() 35 { 36 //トリガー入力の代わり 37 if (!Input.GetKeyDown(KeyCode.Space)) return; 38 39 if(_triggerAction != null) 40 { 41 _triggerAction.Fire(); 42 } 43 } 44} 45
補足情報(FW/ツールのバージョンなど)
Unity 2021.3.16f1
上記のプログラムは簡易版です。
回答4件
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。