bool IsBeatValid(TaiguBallType ballType, TaiguBeatType beatType) { if (ballType == TaiguBallType.Red && beatType == TaiguBeatType.Left) { return(true); } if (ballType == TaiguBallType.Blue && beatType == TaiguBeatType.Right) { return(true); } if (ballType == TaiguBallType.RBMix && beatType == TaiguBeatType.LRMix) { return(true); } if (ballType == TaiguBallType.HoldBegin && (beatType == TaiguBeatType.Left || beatType == TaiguBeatType.Right || beatType == TaiguBeatType.LRMix) && m_headRank != BeatResultRank.Miss) { return(true); } return(false); }
TaiguBeatType FixBeatType(TaiguBeatType beatType) { if (beatType == TaiguBeatType.Left || beatType == TaiguBeatType.Right) { TaiguDrumBall drumBall = CurrentLeadBall(); if (drumBall != null && drumBall.BallType == TaiguBallType.RBMix) { float checkOffset = drumBall.transform.position.x - m_CheckPos.position.x; if (mBeatResult.InCheckRange(checkOffset)) { if (mLastBeatType == TaiguBeatType.Nothing) { mLastBeatTime = Time.realtimeSinceStartup; mLastBeatType = beatType; beatType = TaiguBeatType.Ignore; } else if (mLastBeatType != beatType) { mLastBeatTime = 0f; mLastBeatType = TaiguBeatType.Nothing; beatType = TaiguBeatType.LRMix; } } } } return(beatType); }
public void ProcessInput() { TaiguBeatType downType = TaiguBeatType.Nothing; if (Input.GetKeyDown(KeyCode.F) && Input.GetKeyDown(KeyCode.J)) { downType = TaiguBeatType.LRMix; } else { if (Input.GetKeyDown(KeyCode.F)) { downType = TaiguBeatType.Left; } else if (Input.GetKeyDown(KeyCode.J)) { downType = TaiguBeatType.Right; } else if (Input.GetKeyDown(KeyCode.Q)) { } } if (downType != TaiguBeatType.Nothing) { SendMessage("OnDrumDown", downType, SendMessageOptions.DontRequireReceiver); } TaiguBeatType upType = TaiguBeatType.Nothing; if (Input.GetKeyUp(KeyCode.F) && Input.GetKeyUp(KeyCode.J)) { upType = TaiguBeatType.LRMix; } else { if (Input.GetKeyUp(KeyCode.F)) { upType = TaiguBeatType.Left; } else if (Input.GetKeyUp(KeyCode.J)) { upType = TaiguBeatType.Right; } } if (upType != TaiguBeatType.Nothing) { SendMessage("OnDrumUp", upType, SendMessageOptions.DontRequireReceiver); } }
void OnDrumDown(TaiguBeatType beatType) { if (beatType == TaiguBeatType.Left) { m_RedDrumUp.SetActive(false); m_RedDrumDown.SetActive(true); if (m_RedEffect != null) { m_RedEffect.Stop(); m_RedEffect.Play(); } } else if (beatType == TaiguBeatType.Right) { m_BlueDrumUp.SetActive(false); m_BlueDrumDown.SetActive(true); if (m_BlueEffect != null) { m_BlueEffect.Stop(); m_BlueEffect.Play(); } } else if (beatType == TaiguBeatType.LRMix) { m_RedDrumUp.SetActive(false); m_BlueDrumUp.SetActive(false); m_RedDrumDown.SetActive(true); m_BlueDrumDown.SetActive(true); if (m_BlueEffect != null) { m_BlueEffect.Stop(); m_BlueEffect.Play(); } if (m_RedEffect != null) { m_RedEffect.Stop(); m_RedEffect.Play(); } } TaiguBeatType actualType = FixBeatType(beatType); if (actualType != TaiguBeatType.Ignore) { CheckBeat(actualType); } }
public void OnUpdate() { Vector3 pos = m_BallCaptain.transform.position; pos.x = m_BeginPos.position.x + mBallSpeed * m_Match.CurrentTime; m_BallCaptain.transform.position = pos; CheckExceed(); if (!Mathf.Approximately(mLastBeatTime, 0f)) { if (mLastBeatTime + m_ThresholdTime < Time.realtimeSinceStartup) { mLastBeatTime = 0f; mLastBeatType = TaiguBeatType.Nothing; } } }
void CheckBeat(TaiguBeatType beatType) { TaiguDrumBall drumBall = CurrentLeadBall(); if (drumBall != null) { float checkOffset = drumBall.transform.position.x - m_CheckPos.position.x; bool isCheck = false; switch (drumBall.BallType) { case TaiguBallType.HoldBegin: if (drumBall.transform.position.x >= m_CheckPos.position.x && drumBall.EndBall.position.x <= m_CheckPos.position.x) { isCheck = true; } break; default: isCheck = mBeatResult.InCheckRange(checkOffset); break; } if (isCheck) { bool isValid = IsBeatValid(drumBall.BallType, beatType); bool isEnd = true; if (drumBall.BallType == TaiguBallType.HoldBegin) { isEnd = false; } BeatResultRank headRank = HandleBeat(isValid, checkOffset, m_headRank, isEnd); if (m_headRank == BeatResultRank.None) { m_headRank = headRank; } mLastBeatTime = 0f; mLastBeatType = TaiguBeatType.Nothing; } } }
void OnDrumUp(TaiguBeatType beatType) { if (beatType == TaiguBeatType.Left) { m_RedDrumDown.SetActive(false); m_RedDrumUp.SetActive(true); } else if (beatType == TaiguBeatType.Right) { m_BlueDrumDown.SetActive(false); m_BlueDrumUp.SetActive(true); } else if (beatType == TaiguBeatType.LRMix) { m_RedDrumDown.SetActive(false); m_BlueDrumDown.SetActive(false); m_RedDrumUp.SetActive(true); m_BlueDrumUp.SetActive(true); } }