Beispiel #1
0
        /*-------------------------------------------------------------------------
         * 위치を추가
         * intervalはミリ초지정
         * 1000 = 1초
         * ---------------------------------------------------------------------------*/
        public void Add(Point pos, int interval)
        {
            // 각도계산리셋
            if (m_req_reset_angle)
            {
                m_angle_list.Clear();
                m_angle           = -1;
                m_angle_precision = 0;
                m_req_reset_angle = false;
            }

            // 간격
            m_interval += interval;

            // 2초未満の업데이트時は목록を업데이트しない
            if (m_interval < 2000)
            {
                return;
            }

            // 속도
            SeaRoutes.SeaRoutePoint p1 = new SeaRoutes.SeaRoutePoint(transform.ToVector2(m_old_pos));
            SeaRoutes.SeaRoutePoint p2 = new SeaRoutes.SeaRoutePoint(transform.ToVector2(pos));
            float l = p1.Length(p2, m_map_size_x);                                                      // 距離

            if (l < 100)
            {
                // 대きすぎる距離は無視する
                m_length_list.Add(new data(l, m_interval));
            }

            // 각도
            m_angle_list.Add(new data(pos, m_interval));

            // 목록사이즈を조정する
            ajust_list_size(m_length_list);
            ajust_list_size(m_angle_list);

            //
            m_interval = 0;                     // 업데이트간격初期化
            m_old_pos  = pos;                   // 위치업데이트

            // 속도を계산する
            clac_speed();
            // 각도を계산する
            calc_angle();
        }
        /*-------------------------------------------------------------------------
         * 位置を追加
         * intervalはミリ秒指定
         * 1000 = 1秒
         * ---------------------------------------------------------------------------*/
        public void Add(Point pos, int interval)
        {
            // 角度計算リセット
            if (m_req_reset_angle)
            {
                m_angle_list.Clear();
                m_angle           = -1;
                m_angle_precision = 0;
                m_req_reset_angle = false;
            }

            // 間隔
            m_interval += interval;

            // 2秒未満の更新時はリストを更新しない
            if (m_interval < 2000)
            {
                return;
            }

            // 速度
            SeaRoutes.SeaRoutePoint p1 = new SeaRoutes.SeaRoutePoint(transform.ToVector2(m_old_pos));
            SeaRoutes.SeaRoutePoint p2 = new SeaRoutes.SeaRoutePoint(transform.ToVector2(pos));
            float l = p1.Length(p2, m_map_size_x);                                                      // 距離

            if (l < 100)
            {
                // 大きすぎる距離は無視する
                m_length_list.Add(new data(l, m_interval));
            }

            // 角度
            m_angle_list.Add(new data(pos, m_interval));

            // リストサイズを調整する
            ajust_list_size(m_length_list);
            ajust_list_size(m_angle_list);

            //
            m_interval = 0;                     // 更新間隔初期化
            m_old_pos  = pos;                   // 位置更新

            // 速度を計算する
            clac_speed();
            // 角度を計算する
            calc_angle();
        }