前提・実現したいこと
OS:Windows 10
Unity 2019.2.0f1 を使用している
Oculus Rift S でVRゲームを作っている
VR側とPC側の対戦のようなものを作っていて、PC側はカードをクリックして召喚。
VR側は魔法などでそれを倒すというゲームです。
AssetはOculus Integrationを使っています。
OculusTouchのAボタンを押すと、PC側が最後に使用したカードで召喚されるものが出てきてしまいます。
Aボタンを押しても何もPrefabが召喚されないようにしたいです。
発生している問題・エラーメッセージ
OculusTouchのAボタンを押すと上記の予期せぬ動作をする。
エラーは出ていません。
該当のソースコード
召喚する際に使用するカードのソースコードです。
カードをボタンとして配置し、それを押された際に下記のOnClickが呼ばれるようになっています。
C#
1using UnityEngine; 2using UnityEngine.UI; 3 4public class CardController : MonoBehaviour 5{ 6 7 float delta = 0; 8 9 void Start() 10 { 11 this.aud = GetComponent<AudioSource>(); 12 this.particle = GetComponent<ParticleSystem>(); 13 14 } 15 16 public GameObject pikuprefab; 17 public GameObject bombPrefab; 18 public GameObject Beam; 19 public GameObject DarkPikuPrefab; 20 public GameObject PomepomePikuPrefab; 21 public GameObject GhostPrefab; 22 public GameObject Potion; 23 24 public Text text; 25 26 public AudioClip DarkSE; 27 public AudioClip PomepomeSE; 28 public AudioClip PioPioSE; 29 AudioSource aud; 30 public static int EnemyCount; 31 public int XRandom; 32 int HealX_Random; 33 int HealZ_Random; 34 ParticleSystem particle; 35 36 37 38 void Update() 39 { 40 delta += Time.deltaTime; 41 if(delta >= 30.0f) 42 { 43 delta -= 30.0f; 44 GameObject potion = Instantiate(Potion) as GameObject; 45 HealX_Random = Random.Range(-1, 1); 46 HealZ_Random = Random.Range(-5, -2); 47 potion.transform.position = new Vector3(HealX_Random, -1, HealZ_Random); 48 49 } 50 } 51 public void OnClick(int number) 52 { 53 GameObject Enemy; 54 55 switch (number) 56 { 57 case 0: 58 if (20 <= EnemyCount) 59 { 60 text.text = "cannot spawn"; 61 break; 62 } 63 text.text = "spawn"; 64 Enemy = Instantiate(DarkPikuPrefab) as GameObject; 65 //Beam = Instantiate(Beam) as GameObject; 66 float DarkPosition = Random.Range(-3.0f, 3.0f); 67 Enemy.transform.position = new Vector3(DarkPosition,0.9f,-0.39f); 68 GameObject beam = GameObject.Find("Beam"); 69 if (beam != null) 70 { 71 Debug.Log("FIndBeam"); 72 beam.GetComponent<BeamShot>().shot(); 73 } 74 75 76 EnemyCount++; 77 78 //GameObject beamshot = GameObject.Find("Beam"); 79 //beamshot.GetComponent<BeamShot>().shot(); 80 this.aud.PlayOneShot(this.DarkSE); 81 break; 82 83 84 case 1: 85 /*if (20 <= EnemyCount) 86 { 87 text.text = "cannot spawn"; 88 break; 89 }*/ 90 text.text = "spawn"; 91 Enemy = Instantiate(PomepomePikuPrefab) as GameObject; 92 93 float[] PomepomePosition = {-2.8f, 0.6f, 2.1f}; 94 XRandom = Random.Range(0, 2); 95 Enemy.transform.position = new Vector3(PomepomePosition[XRandom], 3, -0.9f); 96 97 98 EnemyCount++; 99 this.aud.PlayOneShot(this.PomepomeSE); 100 break; 101 102 103 case 2: 104 if (20 <= EnemyCount) 105 { 106 text.text = "cannnot spawn"; 107 break; 108 } 109 text.text = "spawn"; 110 Enemy = Instantiate(GhostPrefab) as GameObject; 111 112 float[] GhostPosition = { -0.46f, 1.48f, -1.77f}; 113 Enemy.transform.position = new Vector3(GhostPosition[XRandom], -0.1f, -9f); 114 115 EnemyCount++; 116 //Enemy.transform.rotation = Quaternion.Euler(0.006f,60,0.002f); 117 break; 118 119 120 case 3: 121 122 text.text = "go!!!!!!!"; 123 Enemy = Instantiate(pikuprefab) as GameObject; 124 Enemy.transform.position = new Vector3(1, 0, 1); 125 this.aud.PlayOneShot(this.PioPioSE); 126 break; 127 128 } 129 } 130}
試したこと
ほかの場所でAボタンを検知している場所がないか確認しましたが見当たりませんでした。
また、ほかのスクリプトで上記のPrefabをインスタンス化するようなプログラムを書いていません。