Unityで音ゲーを作ろう（企画編）

# 事の経緯
高校の文化祭で作ることになった。以上！

# 使用する予定のソフトなど
- [Unity](https://unity3d.com)
- [Visual Studio 2022](https://visualstudio.microsoft.com/ja/)
- [Python](https://python.org)
- [NoteEditor](https://github.com/setchi/NoteEditor)

# どんな音ゲーにしたいか
速度変化があり、カメラが動く音ゲー（Arcaeaとかチュウニズムとか）にしたい。
ラインは4つで行きたい。ノーツの種類はタップ、ロングくらい。

## なら譜面を作るのはどうすんの?
まず出来合いのソフトで譜面を作成し、独自の形式に変換してから速度変化の動作などを作る。
### どんな形式なの?
以下簡単に書きます
```json
{
  "maindata": {
    "music": "音源ファイル名(拡張子あり,文字列)",
    "bpm": bpm(浮動小数点),
    "offset": オフセット(浮動小数点...?)
  },
  "chartdata": {
    "L1": {
      "L1data": {
        "notes": 1ライン目に降ってくるノーツの数
      },
      # 一列目の処理
      "1": {
        # タップノーツの場合
        "speed": ノーツの速度(デフォルトは0.1,浮動小数点),
        "time": 降ってくる(?)時間(浮動小数点),
        "type": "tap"
      },
      "2": {
        # ロングノーツの場合
        "speed": ノーツの速度(デフォルトは0.1,浮動小数点),
        "time": 始点が降ってくる(?)時間(浮動小数点),
        "endtime": 終点の時間(浮動小数点),
        "type": "long"
      },
      続く...
    },
    "L2": {
      ...
    },
    "L3": {
      ...
    },
    "L4": {
      ...
    }
  }
}
```
例(Tera-I/Oを使用させていただきました。また、譜面のデータは曲の途中までしかありません)
```Tera-IO.json
{
  "maindata": {
    "music": "Tera-IO",
    "bpm": 200,
    "offset": 0
  },
  "chartdata": {
    "L1": {
      "1": {
        "speed": 0.2,
        "time": 0.0,
        "endtime": 2.4,
        "type": "long"
      },
      "2": {
        "speed": 0.2,
        "time": 9.15,
        "type": "tap"
      },
      "3": {
        "speed": 0.2,
        "time": 9.6,
        "type": "tap"
      },
      "4": {
        "speed": 0.2,
        "time": 10.799999999999999,
        "type": "tap"
      },
      "5": {
        "speed": 0.2,
        "time": 10.95,
        "type": "tap"
      },
      "6": {
        "speed": 0.2,
        "time": 11.1,
        "type": "tap"
      },
      "7": {
        "speed": 0.2,
        "time": 11.25,
        "type": "tap"
      },
      "8": {
        "speed": 0.2,
        "time": 11.4,
        "type": "tap"
      },
      "9": {
        "speed": 0.2,
        "time": 11.549999999999999,
        "type": "tap"
      },
      "10": {
        "speed": 0.2,
        "time": 11.7,
        "type": "tap"
      },
      "11": {
        "speed": 0.2,
        "time": 11.85,
        "endtime": 12.0,
        "type": "long"
      },
      "L1data": {
        "notes": 11
      }
    },
    "L2": {
      "1": {
        "speed": 0.2,
        "time": 2.4,
        "endtime": 4.8,
        "type": "long"
      },
      "2": {
        "speed": 0.2,
        "time": 9.2625,
        "type": "tap"
      },
      "3": {
        "speed": 0.2,
        "time": 9.487499999999999,
        "type": "tap"
      },
      "L2data": {
        "notes": 3
      }
    },
    "L3": {
      "1": {
        "speed": 0.2,
        "time": 4.8,
        "endtime": 7.199999999999999,
        "type": "long"
      },
      "2": {
        "speed": 0.2,
        "time": 9.375,
        "type": "tap"
      },
      "3": {
        "speed": 0.2,
        "time": 10.5,
        "endtime": 12.0,
        "type": "long"
      },
      "L3data": {
        "notes": 3
      }
    },
    "L4": {
      "1": {
        "speed": 0.2,
        "time": 7.199999999999999,
        "endtime": 9.6,
        "type": "long"
      },
      "L4data": {
        "notes": 1
      }
    }
  }
}
```

### 変換ソフトは?
別パートで書きます。

## 判定は?
Perfect,Good,Bad,Missの4つ

## 得点は?
1000000点満点で行く。
内部的にはPerfectに5、Goodに3、BadとMissに0点をつける。

## レイアウト(作るオブジェクト)
- ステージ
- タップノーツ(L1からL4まで)
- ロングノーツ(L1からL4まで)
- 判定
- コンボ
- スコア
- シークバー(?)

# 最後に
と、まぁこのような感じで作っていきます。
何日(7月中には終わらせたい)かかるかわかりませんが頑張ります(?)。
それでは次回パートまでしばらくお待ちください～

## 次回
とりあえずノーツを降らせるところまで行こう。
(ごめんなさい嘘書きました)
[次パート](https://qiita.com/keichankotaro/items/bac8985076dbe9d87720)