④では、新規プロジェクトを作って、フォルダ内のファイルを入れ替えることで
流れる音楽を変えることが出来ました。
ここから、②の「視線を向けたら音楽が鳴る」プログラムの「音楽」部分を、
今は、組み込まれている音楽が鳴っているところを
フォルダ内の音楽ファイルに変更するようにします。
しかし、壁に当たっています。
すごく長いのですが、コードを全部載せています。
一番よく分からないのが、
↓↓↓
//注視して無かったり、マウス左クリックされてなかったりしたら
else
{
//注視していなければ青色に
gameObject.GetComponent<Renderer>().material.color = Color.blue;
//注視がそれただけでは一時停止にはしていない。視線がそれることはよくあると思うので。
//一時停止にしたいならPauseを入れたら可能。
//改訂として目をそらしたら止めるようにする
// Pause();
audioSource.Play();
}
ここに、audioSource.Play()を入れないと、見たとき(画面が赤の時)に再生されず、
目をそらしたときに再生されてしまうということ。
逆の気がしてならない。
それと、目をそらしたらすぐに止まってしまう。
目をそらしても鳴らし続けたい。
まだ試行錯誤が必要です。
↓失敗しているコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Tobii.Gaming; //ライブラリの追加
public class play : MonoBehaviour
{
public AudioClip audioClip;
private AudioSource audioSource;
//注視情報
private GazeAware gazeAware;
//停止中か再生中かなど
int ichiziteishi;
void Start()
{
audioSource = this.GetComponent<AudioSource>();
StartCoroutine(Connect());
//注視情報の取得
gazeAware = GetComponent<GazeAware>();
//一時停止が押されたかどうかを見るための変数。最初と再生中は1.一時停止中は2
ichiziteishi = 1;
}
void Update()
{
// マウスの左ボタンを推した場合も再生
//オブジェクトを注視していたらTrue
bool flg = gazeAware.HasGazeFocus;
//注視していたり、マウスが左クリックされたら
if (flg || Input.GetMouseButtonDown(0))
{
//注視していたら赤色に
gameObject.GetComponent<Renderer>().material.color = Color.red;
if (!audioSource.isPlaying) //再生中で無いなら
{
//一時停止関数がもし2(一時停止中)なら
if (ichiziteishi == 2)
{
//再開してください(同時にichiziteisi変数は1になる)
UnPause();
}
//一時停止関数がもし1(一時停止中でない(起動したところだったり、停止中だったり))なら再生する。
else
{
Play(audioClip);
}
}
}
//注視して無かったり、マウス左クリックされてなかったりしたら
else
{
//注視していなければ青色に
gameObject.GetComponent<Renderer>().material.color = Color.blue;
//注視がそれただけでは一時停止にはしていない。視線がそれることはよくあると思うので。
//一時停止にしたいならPauseを入れたら可能。
//改訂として目をそらしたら止めるようにする
// Pause();
audioSource.Play();
}
// 停止
if (audioSource.isPlaying) //再生中なら
{
//注視がそれているときのみ有効。テンキーの「2」を押して離したら停止
if (Input.GetKeyUp(KeyCode.Keypad2))
{
Stop();
}
}
// 注視がそれているときのみ有効。一時停止
if (audioSource.isPlaying) //再生中なら
{
//テンキーの「1」を押して離したら一時停止し、ichiziteishi変数を2に。
if (Input.GetKeyUp(KeyCode.Keypad1))
{
Pause();
}
}
// 再開
if (!audioSource.isPlaying) //停止中なら
{
//もう一回、注視したり左クリックしたりしたら再開し、ichiziteishi変数を1に。
if (flg || Input.GetMouseButtonDown(0))
{
UnPause();
}
}
if (Input.GetKey(KeyCode.Escape))
{
Application.Quit();
}
}
private IEnumerator Connect()
{
string url = "C:/sound/5.wav";
WWW www = new WWW(url);
yield return www;
audioSource = GetComponent<AudioSource>();
audioSource.clip = www.GetAudioClip(false, true);//二つ目の引数がturueで読込中の再生可能
// audioSource.Play(); //audioSource.Play();
}
//再生、一時停止、停止、再開、完全に停止について
// 再生 Play と、入力したら一回だけ再生
private void Play(AudioClip audi)
{
audioSource.PlayOneShot(audi);
//この再生だと、連打したら音が重なる→ audioSource.Play();
}
// 一時停止 Pauseと、入力したらichiziteishi変数に2を入れて、一時停止
private void Pause()
{
ichiziteishi = 2;
audioSource.Pause();
}
// 停止 Stopと、入力したら停止
private void Stop()
{
audioSource.Stop();
}
// 再開 UnPause と、入力したらichiziteishi変数に1を入れて、再開
private void UnPause()
{
ichiziteishi = 1;
audioSource.UnPause();
}
}