//节拍观察者,颤抖圆环;评价观察者,累计分数 public void ObserverUpdate(ISubject subject, System.Object arg) { //节拍观察者 if (subject == SingletonBeatManager.GetInstance()) { if (mIsFirstBeat) { mIsFirstBeat = false; return; } //以防有的歌曲抖动过快,所以在每次抖动前清空数据 mCurrentRadius = RadiusLowerBound; if (WaveSpeedInPixel < 0) { WaveSpeedInPixel *= -1.0f; } //开始颤抖圆环 StartCoroutine(WaveCircle()); } //评价观察者 if (subject == SingletonActionMatchManager.GetInstance()) { mScore += (arg as MatchResult).Score; DataBetweenScene.Score = mScore; //DataBetweenScene.AverageScore = mScore / SingletonActionMatchManager.GetInstance().ActionMatchCount; StartCoroutine(UpdateScore()); } }
// Use this for initialization void Start() { mInstance = this; mBeatCount = 0; mBarCount = 0; mEvaluationTimes = 0; mIsEvaluationAllEnd = false; mIsEvaluationEnd = true; mIsFirstEvaluation = false; mBeatManager = SingletonBeatManager.GetInstance(); mBeatManager.AddObserver(this); mListObservers = new List <IObserver>(); mListEvaluationAttribute = new List <EvaluationAttribute> (); //通过迭代器读入数据 ReadEvaluationAttribute(); //记录哪个小节进行评价 mListEvaluationBar = new List <int> (); CalEvaluationBar(); //初始化标准动画队列 mQueueStdMotion = new Queue <MotionJointQuaternionVector>(); //初始化四元组 InitTransform(); InitQuaternionVector(); //算法 mActionMatchAlogrithm = new StaticMatch(mStdJointQuaternionVector, mUserJointQuaternionVector); }
/// <summary> /// 构造函数 /// </summary> public StaticMatch(MotionJointQuaternionVector StdJointQuaternionVector, MotionJointQuaternionVector UserJointQuaternionVector) { mListMatchScore = new List <float>(); mListStd = new List <MotionJointQuaternionVector>(); mListScore = new List <float>(); mStdDistance = Math.Abs(Vector3.Distance(StdJointQuaternionVector.TorsoPosition, UserJointQuaternionVector.TorsoPosition)); mRate = SingletonActionMatchManager.GetInstance().StaticMatchAlogrithmScoreRate; }
// Update is called once per frame void Update() { //判断游戏结束,计算平均分,跳转场景 if (SingletonBeatManager.GetInstance().IsGameOver) { DataBetweenScene.AverageScore = DataBetweenScene.Score / SingletonActionMatchManager.GetInstance().ActionMatchCount; Application.LoadLevel("GameOver"); } }
// Use this for initialization void Start() { mCurrentRadius = RadiusLowerBound; SingletonBeatManager.GetInstance().AddObserver(this); SingletonActionMatchManager.GetInstance().AddObserver(this); mFullScore = SingletonActionMatchManager.GetInstance().ActionMatchCount * 100.0f; mCenter = new Vector2(); mCubeRect = new Rect(); }
// Use this for initialization void Start() { //读取迭代器,确定比较分数 IIterator scoreIter = SingletonGameData.GetInstance().CreateEachEvalScoreIterator(); mLevelScore = new float[scoreIter.Count]; for (int i = 0; i < scoreIter.Count; i++) { mLevelScore[i] = (int)scoreIter.Next(); } //注册为观察者 SingletonActionMatchManager.GetInstance().AddObserver(this); }
void Start() { SingletonActionMatchManager.GetInstance().AddObserver(this); }