예제 #1
0
    //节拍观察者,颤抖圆环;评价观察者,累计分数
    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);
 }
예제 #3
0
 /// <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;
 }
예제 #4
0
 // Update is called once per frame
 void Update()
 {
     //判断游戏结束,计算平均分,跳转场景
     if (SingletonBeatManager.GetInstance().IsGameOver)
     {
         DataBetweenScene.AverageScore = DataBetweenScene.Score / SingletonActionMatchManager.GetInstance().ActionMatchCount;
         Application.LoadLevel("GameOver");
     }
 }
예제 #5
0
    // 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();
    }
예제 #6
0
    // 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);
    }
예제 #7
0
 void Start()
 {
     SingletonActionMatchManager.GetInstance().AddObserver(this);
 }