void OnEventEasyChange(KoreographyEvent evt) { string txt = evt.GetTextValue(); if (m_PreSample == evt.StartSample) { return; } m_PreSample = evt.StartSample; string[] values = txt.Split(','); if (values.Length < 3) { return; } MusicEventData data = new MusicEventData(); data.oper = (MusicOper)int.Parse(values[0]); data.player = (MusicPlayer)int.Parse(values[1]); data.content = values[2]; data.sampleLen = (evt.EndSample - evt.StartSample) / (float)Koreographer.GetSampleRate(m_AudioClip.name); //data.oper = MusicOper.LongUp; //data.sampleLen = 1.5f; //Debug.Log(txt + " " + data.sampleLen); if (EventChangeHandler != null) { EventChangeHandler(data); } }
public override void OnUpdate() { if (!MusicManager.Instance.IsPlaying()) { _iCtrl.Close(); return; } LinkedListNode <BulletItem> temp = m_BulletObjs.First; while (temp != null) { BulletState bulletState = BulletState.Normal; BulletItem item = temp.Value; MusicEventData musicData = item.musicData; float bulletCollisionX1 = item.obj.transform.position.x; // - item.collisionSize.x * 0.5f; if (bulletCollisionX1 <= m_Player.transform.position.x) { bulletState = BulletState.Dead; } else { //进入外圈 if (bulletCollisionX1 <= m_OutTargetX2 && bulletCollisionX1 >= m_OutTargetX1) { bulletState = BulletState.IntoOut; if (bulletCollisionX1 <= m_InnerTargetX2 && bulletCollisionX1 >= m_InnerTargetX1) { bulletState = BulletState.IntoInner; } } } //Debug.Log(bulletState); switch (bulletState) { case BulletState.Dead: m_BulletObjs.Remove(temp); GameObject.Destroy(item.obj); break; case BulletState.Normal: switch (musicData.oper) { case MusicOper.LongUp: if (LTInput.GetKey(KeyCode2.Left)) { if (item.collisionPoint != Vector3.zero) { float offset = item.collisionPoint.x - bulletCollisionX1; item.maskTrans.sizeDelta = new Vector2(item.maskSize.x - offset, item.maskTrans.sizeDelta.y); } } break; case MusicOper.LongDown: if (LTInput.GetKey(KeyCode2.Right)) { if (item.collisionPoint != Vector3.zero) { float offset = Mathf.Abs(item.collisionPoint.x - bulletCollisionX1); item.maskTrans.sizeDelta = new Vector2(item.maskSize.x - offset, item.maskTrans.sizeDelta.y); } } break; } break; case BulletState.IntoOut: case BulletState.IntoInner: { switch (musicData.oper) { case MusicOper.Up: if (LTInput.GetKeyDown(KeyCode2.Left)) { m_BulletObjs.Remove(temp); GameObject.Destroy(item.obj); } break; case MusicOper.LongUp: if (LTInput.GetKey(KeyCode2.Left)) { if (item.collisionPoint == Vector3.zero) { item.collisionPoint = new Vector3(bulletCollisionX1, 0, 0); } float offset = item.collisionPoint.x - bulletCollisionX1; item.maskTrans.sizeDelta = new Vector2(item.maskSize.x - offset, item.maskTrans.sizeDelta.y); } break; case MusicOper.Down: if (LTInput.GetKeyDown(KeyCode2.Right)) { m_BulletObjs.Remove(temp); GameObject.Destroy(item.obj); } break; case MusicOper.LongDown: if (LTInput.GetKey(KeyCode2.Right)) { if (item.collisionPoint == Vector3.zero) { item.collisionPoint = new Vector3(bulletCollisionX1, 0, 0); } float offset = Mathf.Abs(item.collisionPoint.x - bulletCollisionX1); item.maskTrans.sizeDelta = new Vector2(item.maskSize.x - offset, item.maskTrans.sizeDelta.y); } break; } } break; } temp = temp.Next; } }
//bool isCreate = false; void OnEventChangeHandler(MusicEventData data) { //if (!isCreate) //{ // data.oper = MusicOper.LongUp; // isCreate = true; //} //else //{ // return; //} GameObject bulletObj = GameObject.Instantiate(m_Bullet); bulletObj.Attach(m_Bullets); bulletObj.transform.position = m_Enermy.transform.position; bulletObj.SetActive(true); bulletObj.transform.DOMoveX(m_Player.transform.position.x, m_Speed).SetEase(Ease.Linear); BulletItem item = new BulletItem(); item.obj = bulletObj; item.bgImage = bulletObj.transform.Find("bg").GetComponent <Image>(); item.contentText = bulletObj.transform.Find("bg/Text").GetComponent <Text>(); item.maskTrans = bulletObj.transform.Find("bg").GetComponent <RectTransform>(); item.musicData = data; item.collisionSize = bulletObj.GetComponent <RectTransform>().sizeDelta; switch (data.oper) { case MusicOper.Up: item.outScore = 100; item.innerScore = 150; item.bgImage.color = m_upColor; break; case MusicOper.LongUp: item.outScore = 200; item.innerScore = 300; item.bgImage.color = m_longUpColor; break; case MusicOper.Down: item.outScore = 100; item.innerScore = 150; item.bgImage.color = m_downColor; break; case MusicOper.LongDown: item.outScore = 200; item.innerScore = 300; item.bgImage.color = m_longDownColor; break; } item.contentText.text = data.content; float width = item.contentText.TextWidth(); if (data.sampleLen > 0) { if (data.sampleLen * m_OneSmapleLength > width) { width = data.sampleLen * m_OneSmapleLength; } } item.maskSize = new Vector2(width, 0); item.bgImage.GetComponent <RectTransform>().offsetMax = new Vector2(width, 0); item.bgImage.GetComponent <RectTransform>().sizeDelta = new Vector2(width, 36); m_BulletObjs.AddLast(item); }