こんばんわ、あずらんです。

前回の続きで今回はさらっとループササウンドを流す方法を書きたいと思います。

 

まずは、ループ用のサウンドを用意してください。

(どんなのでもOKです)

 

では、タッチしたらループを流したり止めたりしてみましょう。

まずは日本語でスクリプトを書いてみましょう。

 

 

------------------------------------------

 

default

{

    touch_start(integer total_number)

    {

        サウンドが止まっていたらループサウンドを流す。

        ループが流れていたら止める。

    }

}

 

------------------------------------------

 

至って簡単ですね。

では早速ループサウンドの流し方をグーグル先生に聞いてみましょうか。

「ループサウンド lsl」

【 llLoopSound 】という関数があると・・・なるほど。

 

------------------------------------------

llLoopSound( string sound, float volume );

string sound = プリムの中身に入っているループ再生するサウンド名、またはUUID

float volume = サウンドのボリューム、0.0~1.0

------------------------------------------

 

では早速、組み込んでみましょう。

 

------------------------------------------

 

//プリムの中身に入っているサウンド名(piko)がサウンドの名前

string SoundA = "piko";

default

{

    touch_start(integer total_number)

    {

        //ループサウンドを流す

        llLoopSound("SoundA",1.0);

    }

}

 

------------------------------------------

 

 

ひとまずクリックしたら流すことが出来るようにはなりましたが、止めることが出来ないですね。

グーグル先生に関数を聞いてみましょうか。

「lsl サウンド 停止」で検索っと・・・

【 llStopSound( ); 】これを書けばいいのですか。

※この関数は特定のサウンドのみ停止することは出来ないらしいです。

 

では追加をしてみましょう。

 

 

------------------------------------------

//プリムの中身に入っているサウンド名(piko)がサウンドの名前

string SoundA = "piko";

 

//サウンド切り替え用数値

integer sounddata = 0;

 

default

{

    touch_start(integer total_number)

    {

        //sounddataが0の時の処理

        if(sounddata == 0)

        {

            //ループサウンドを流す

            llLoopSound(SoundA,1.0);

            //サウンド切り替え用数値の設定

            sounddata = 1;

            llOwnerSay((string)sounddata);

        }

        //sounddataが0以外の時の処理

        else

        {

            //全てのサウンドを停止します。

            llStopSound();

            //サウンド切り替え用数値の設定

            sounddata = 0;

            llOwnerSay((string)sounddata);

        }

    }

}

 

------------------------------------------

 

いかがでしょうか?

とりあえずはやりたいことは出来たと思うのでここらへんで~。

ではでは、また次回~