Ejemplo n.º 1
0
        public MusicNote(int measure, int position, MusicPlaceKind place)
        {
            this.measure        = measure;
            this.LocalPosition  = position;
            this.GlobalPosition = MusicConst.POSITION_FINENESS * measure + position;
            this.Place          = place;

            IsAppeared = false;
            NoteObject = null;

            LineObjects = new List <MusicTapLineObject>();
        }
Ejemplo n.º 2
0
        private void Initialize()
        {
            Instance             = this;
            StartPositions       = new Dictionary <MusicPlaceKind, Vector3>();
            EndPositions         = new Dictionary <MusicPlaceKind, Vector3>();
            PlaceToJudgePosition = new Dictionary <MusicPlaceKind, int>();

            // 両サイドの判定ラインの位置を設定
            StartPositions[MusicPlaceKind.LeftLower]  = rightLower.anchoredPosition;
            EndPositions[MusicPlaceKind.LeftLower]    = leftLower.anchoredPosition;
            StartPositions[MusicPlaceKind.LeftUpper]  = rightUpper.anchoredPosition;
            EndPositions[MusicPlaceKind.LeftUpper]    = leftUpper.anchoredPosition;
            StartPositions[MusicPlaceKind.RightLower] = leftLower.anchoredPosition;
            EndPositions[MusicPlaceKind.RightLower]   = rightLower.anchoredPosition;
            StartPositions[MusicPlaceKind.RightUpper] = leftUpper.anchoredPosition;
            EndPositions[MusicPlaceKind.RightUpper]   = rightUpper.anchoredPosition;

            // 上と下の判定ラインの位置を計算
            for (int i = 0; i < 5; ++i)
            {
                MusicPlaceKind lowerKind = MusicPlaceKind.CenterLower1 + i;
                MusicPlaceKind upperKind = MusicPlaceKind.CenterUpper1 + i;

                Vector2 upperPosition = (centerUpperLeft.anchoredPosition * (4 - i) + centerUpperRight.anchoredPosition * i) / 4f;
                Vector2 lowerPosition = (centerLowerLeft.anchoredPosition * (4 - i) + centerLowerRight.anchoredPosition * i) / 4f;

                StartPositions[lowerKind] = upperPosition;
                EndPositions[lowerKind]   = lowerPosition;

                StartPositions[upperKind] = lowerPosition;
                EndPositions[upperKind]   = upperPosition;
            }

            // 判定文字ディクショナリを生成
            foreach (MusicPlaceKind kind in Enum.GetValues(typeof(MusicPlaceKind)))
            {
                if (kind.IsLeftSide())
                {
                    PlaceToJudgePosition[kind] = 0;
                }
                else if (kind.IsRightSide())
                {
                    PlaceToJudgePosition[kind] = 2;
                }
                else
                {
                    PlaceToJudgePosition[kind] = 1;
                }
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 左側ノーツの場合
 /// </summary>
 public static bool IsLeftSide(this MusicPlaceKind place)
 {
     return(place == MusicPlaceKind.LeftLower || place == MusicPlaceKind.LeftUpper);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 右側ノーツの場合
 /// </summary>
 public static bool IsRightSide(this MusicPlaceKind place)
 {
     return(place == MusicPlaceKind.RightLower || place == MusicPlaceKind.RightUpper);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 指定場所にノーツを追加する
 /// </summary>
 /// <param name="position">1小節をX分割した中のY番目のノーツはX*POSITION_FINENESS/Y</param>
 public void AddMusicNote(MusicPlaceKind place, int measure, int position)
 {
     noteList[place].Add(new MusicNote(measure, position, place));
 }