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>(); }
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; } } }
/// <summary> /// 左側ノーツの場合 /// </summary> public static bool IsLeftSide(this MusicPlaceKind place) { return(place == MusicPlaceKind.LeftLower || place == MusicPlaceKind.LeftUpper); }
/// <summary> /// 右側ノーツの場合 /// </summary> public static bool IsRightSide(this MusicPlaceKind place) { return(place == MusicPlaceKind.RightLower || place == MusicPlaceKind.RightUpper); }
/// <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)); }