前提・実現したいこと
UnityでNintendoSwitchのジョイコンを使ってリズムゲームを制作しています。
ジョイコンを振って遊ぶのですが、ノーツが判定ラインに来た時にジョイコンが大きく振られたか、小さく振られたかを判定したいです。
発生している問題・エラーメッセージ
加速度を取得して、振られたか振られていないかの判定の仕方は理解し、xが3~5までは小判定、5以上動けば大判定
それ以外は判定なしという風にしようと考えていて、Debug.Logで表示しているのですが、この判定されたという履歴から
どのようにして取得すればいいのかがわかりません。
小判定を一度通ってから大判定へ行くので、2度判定されてしまうのですがこれをどちらか1回だけにしたいです。
(小判定から10行以内に大判定があれば大判定になるという感じで)
そもそもDebug.Logから取得しようとしていることがダメなのかと思い、
いろいろ調べているのですが解決方法が見つからず助けて頂きたいです。
試したこと
C#
1 public bool innotes; 2 public bool inbignotes; 3 4 Vector3 oldaccel = new Vector3(0,0,0); 5void Start() 6 { 7 innotes = true; 8 inbignotes = true; 9 } 10 11 private void OnTriggerStay(Collider c) 12{ 13 var accel = joycon.GetAccel(); 14//大判定・加速度がaccelbigpoint以上なら判定 15 if (Mathf.Abs(oldaccel.x - accel.x) > accelxbigpoint && inbignotes == true && c.gameObject.tag == "judgeline") 16 { 17 inbignotes==false 18 FindObjectOfType<Pointplus>().Addbigpoint(); 19 Debug.Log(" 大たてうごいた" + oldaccel + accel); 20 Destroy(this.gameObject); 21 22 23 } 24 25 26//小判定・加速度がaccelypoint以上かつaccelxbigpoint以下なら判定 27 if (Mathf.Abs(oldaccel.x - accel.x) > accelxpoint && Mathf.Abs(oldaccel.x - accel.x) < accelxbigpoint 28 && innotes == true && c.gameObject.tag == "judgeline") 29 { 30 innotes==false 31 FindObjectOfType<Pointplus>().Addsmallpoint(); 32 Debug.Log(" 小たてうごいた"); 33 if(inbignotes==true) 34 { 35 Destroy(this.gameObject); 36 } 37 38else 39 { 40 Debug.Log("動いてない"); 41 } 42 oldaccel=accel; 43}