private void CheckMiss() { //処理中でない状態で視点が判定ラインを通過し、 //Badの判定幅よりも離れるとノーツを削除 if (!isProcessed && noteProperty.secBegin - PlayerControllers.CurrentSec < -JudgementManager.JudgementWidth[JudgementType.Bad]) { //TODOミス処理(二回呼び出す) EvaluationManager.OnMiss(); //始点の分 EvaluationManager.OnMiss(); //終点の分 //リストから削除 PlayerControllers.ExistingNoteControllers.Remove( GetComponent <NoteControllerBase>() ); //GameObject自体も削除 Destroy(gameObject); } // 処理中の状態で終点が判定ラインを通過し、 // BaDの判定幅よりも離れるとノーツを削除 if (isProcessed && noteProperty.secEnd - PlayerControllers.CurrentSec < -JudgementManager.JudgementWidth[JudgementType.Bad]) { //TODO ミス処理 EvaluationManager.OnMiss(); //処理中フラグを解除 isProcessed = false; //リストから削除 PlayerControllers.ExistingNoteControllers.Remove( GetComponent <NoteControllerBase>() ); // GameObjectを削除 Destroy(gameObject); } }
//キーが離された時 public override void OnKeyUp(JudgementType judgementType) { //TODO 判定がBad以内の時 if (judgementType != JudgementType.Miss) { //ヒット処理 EvaluationManager.OnHit(judgementType); } //判定がmissのとき else { //ミス処理 EvaluationManager.OnMiss(); } //コンソールに判定を表示 Debug.Log(judgementType); // 効果音再生 AudioSource.PlayClipAtPoint(clipHit, transform.position); // 処理中フラグを解除 isProcessed = false; //リストから削除 PlayerControllers.ExistingNoteControllers.Remove( GetComponent <NoteControllerBase>() ); //gameObjectも削除 Destroy(gameObject); }
private void OnReleased(object sender, EventArgs e) { // 最近傍のノーツを処理すべきタイミング(sec) var noteSec = noteProperty.secEnd; // 処理すべきタイミングと // 実際にキーが押されたタイミングの差の絶対値 var differenceSec = Mathf.Abs(noteSec - PlayerController.CurrentSec); // 最近傍のノーツのOnKeyUpを呼び出し var judgementType = JudgementManager.GetJudgementType(differenceSec); // 判定がBad以内のとき if (judgementType != JudgementType.Miss) { // ヒット処理 EvaluationManager.OnHit(judgementType); } // 判定がMissの時(MISS) else { // ミス処理 EvaluationManager.OnMiss(); } // コンソールに判定を表示 Debug.Log(judgementType); // 効果音再生 AudioSource.PlayClipAtPoint(clipHit, transform.position); // 処理中フラグを解除 isProcessed = false; //リストから削除 PlayerController.ExistingNoteControllers.Remove( GetComponent <NoteControllerBase>() ); // GameObject自体も削除 Destroy(gameObject); }
// 見逃し検出 private void CheckMiss() { // 判定ラインを通過した後、BADの判定幅よりも離れるとノーツを削除 if (noteProperty.secBegin - PlayerController.CurrentSec < -JudgementManager.JudgementWidth[JudgementType.Bad]) { // ミス処理 EvaluationManager.OnMiss(); // 未処理ノーツ一覧から削除 PlayerController.ExistingNoteControllers.Remove( GetComponent <NoteControllerBase>() ); // GameObject自体も削除 Destroy(gameObject); } }