Пример #1
0
        //* ────────────-_______________________*
        //* constructor & destructor ───────────────────────*

        //* -----------------------------------------------------------------------*
        /// <summary>静的なコンストラクタ。</summary>
        /// <remarks>ここで加速度グラフ情報を作成します。</remarks>
        static CBall()
        {
            List <float> graph      = new List <float>();
            float        fPrevSpeed = 0f;

            for (SPhase phase = SPhase.initialized; phase < 3; phase.count++)
            {
                int   nPCount = phase.countPhase;
                int   nPLimit = accelerateTime[phase];
                float fSpeed  = MAX_SPEED;
                switch (phase)
                {
                case 0:
                    fSpeed = CInterpolate.lerpClampInOutQuad(0, MAX_SPEED, nPCount, nPLimit);
                    break;

                case 2:
                    fSpeed = CInterpolate.lerpClampInQuad(MAX_SPEED, 0, nPCount, nPLimit);
                    break;
                }
                graph.Add(fSpeed);
                fPrevSpeed             = fSpeed;
                phase.reserveNextPhase = nPCount >= nPLimit;
            }
            speedGraph = graph.AsReadOnly();
            enemy      = new CBall();
            player     = new CBall();
        }
Пример #2
0
        //* -----------------------------------------------------------------------*
        /// <summary>加速変化する内分カウンタです。</summary>
        ///
        /// <param name="start"><paramref name="now"/>が0と等しい場合の値</param>
        /// <param name="end">
        /// <paramref name="now"/>が<paramref name="limit"/>と等しい場合の値
        /// </param>
        /// <param name="now">現在時間</param>
        /// <param name="limit"><paramref name="end"/>に到達する時間</param>
        /// <returns>
        /// 0から<paramref name="limit"/>までの<paramref name="now"/>に相当する
        /// <paramref name="start"/>から<paramref name="end"/>までの値
        /// </returns>
        private byte interpolate(float start, float end, float now, float limit)
        {
            float result = CInterpolate.lerpClampInQuad(start, end, now, limit);

            return((byte)((int)(result / 16) * 16));
        }