コード置き場「MIDI + Unity #1 – #10」

コード置き場(MIDI #1-#10)
スポンサーリンク

【MIDI Animation Track】関連の動画内で表示されるコード

サムネイルをクリックすると、Youtubeの動画ページに移動します。

#2:音楽と同期したアニメーションを作ってみる

サムネイル#2
manifest.json
{
  "scopedRegistries": [
    {
      "name": "Keijiro",
      "url": "https://registry.npmjs.com",
      "scopes": [ "jp.keijiro" ]
    }
  ],
  "dependencies": {
    "jp.keijiro.klak.timeline.midi": "1.0.5",
    ...

#3:音楽に合わせてオブジェクトを生成してみる

サムネイル#3
ノートを生成
// 生成するノート(1)
[SerializeField] GameObject noteRed;

// 生成するノート(2)
[SerializeField] GameObject noteYel;


public void NoteOnC()
{
    // C(ド)の音でノートを生成
    Instantiate(noteRed, new Vector2(7, 3), transform.rotation);
}

public void NoteOnD()
{
    // D(レ)の音でノートを生成
    Instantiate(noteYel, new Vector2(7, 2), transform.rotation);
}
ノートの移動と削除
// ノートの移動速度
[SerializeField] float speed;


void Update()
{
    // 左に移動
    transform.position += Vector3.left * speed * Time.deltaTime;
}

void OnTriggerExit2D(Collider2D col)
{
    // 判定ラインを通過したら
    if (col.CompareTag("Judge"))
    {
        // 爆発エフェクト
        // Explosion();
        // 削除
        Destroy(gameObject);
    }
}

#5:ランダム要素の追加

サムネイル#5
ランダムに敵弾を選択
// 敵弾
[SerializeField] GameObject[] bullets;


void Shot()
{
    // 配列の中からランダムに選択する
    int index = Random.Range(0, bullets.Length);

    // 乱数で選ばれた敵弾を生成
    Instantiate(bullets[index], transform.position, Quaternion.identity);
}

void Initialize()
{
    // 現在時刻のミリ秒でシード値を設定
    Random.InitState(DateTime.Now.Millisecond);
}
配列のシャッフル
// 生成するノート
[SerializeField] GameObject noteRed;

// 敵ユニットの生成位置
Vector2[] array = new [] {new Vector2(7, 3), new Vector2(7, 2), ... };


void Start()
{
    // 並べ替えを実行
    Shuffle(array);
}

// 配列(Vector2型)のシャッフル
void Shuffle (Vector2[] deck)
{
    for (int i = 0; i < deck.Length; i++)
    {
        var temp = deck[i];
        int randomIndex = Random.Range(i, deck.Length);
        deck[i] = deck[randomIndex];
        deck[randomIndex] = temp;
    }
}

public void NoteOnC()
{
    // シャッフル後の配列で敵ユニットを生成
    Instantiate(noteRed, array[0], transform.rotation);
}
タイトルとURLをコピーしました