Unity:音楽の再生速度のみ早くする

WebGL では使えないので注意

WebGL は AudioMixer に対応していない。

Unity の AudioSource の Pitch では音楽だけでなくピッチそのものが変わってしまうので、早いうえに音が高いみたいなことが起こる。

そこで AudioMixer の PitchShifter なる機能を使って音楽のはやさを早くしようということにした。

今回は最低速度を等倍に最大速度を二倍にする。(pitch の上限が2なので速度はこれ以上あがらない)

まずは AudioMixer を作る。

次に AudioMixer を選択して AudioMixer ウィンドウを開き、作った Mixer のカードみたいなやつの Add... から PitchShifter を選択して追加。選択ウィンドウで全部隠れてるけど下に作った Mixer のカードみたいなやつがいる。

次に カードみたいなやつ を選択して PitchShifter の Pitch を右クリックし Expose する。

あとは ExposeParamaters を適当に編集する。
Game の下にある ExposedParameters から編集したいやつを右クリックして名前を変えたりする。
今回は Shifter という名前にした。(スクリプトで使用するのでわかりやすい名前がいいと思われる)

あとは適当にスクリプト書いてはっつけていく。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.UI;
public class PitchShifterScript : MonoBehaviour
{
    public AudioSource source;
    public AudioMixer mixer;

    public Slider slider;

    float pitch;
    // Start is called before the first frame update
    void Start()
    {
        source.Play();
        source.loop = true;
    }

    // Update is called once per frame
    void Update()
    {
        source.pitch = 1f + (float)(slider.value / slider.maxValue);
        pitch = 1f / source.pitch;
        mixer.SetFloat("Shifter",pitch);
    }
}

AudioSource , AudioMixer, Slider を UnityEditor で割り当てる。終わり。

実際のテスト動画。
https://youtu.be/vReTPUf7cfM

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA