質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

19629閲覧

AudioSourceが再生終了したかどうかを取得したい

Waken

総合スコア37

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

2クリップ

投稿2016/09/21 08:57

AudioSourceが再生終了したかどうかを取得したいです。

!audioSource.IsPlaying()を利用した場合、Pause()を呼ばれた場合との区別がつきません。

以下の式で取得しようとしたのですが、

( audioSource.time == 0.0f && !audioSource.IsPlaying() );

この場合、再生直後にPauseした場合を除外できません。

何か良い方法は無いでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

audioSource.time と audioSource.clip.length をチェックするのはどうでしょうか?

投稿2016/09/23 06:50

buibui80

総合スコア1033

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Waken

2016/10/06 06:26

すいません。回答が付いていることに気が付きませんでした。 回答の意味がちょっとどういうことか分からなかったのですが、 audioSource.time == audioSource.clip.length だったら再生終了と判定するということでしょうか? audioSource.timeは再生終了すると、audioSource.clip.lengthにまで至らずにゼロになってしまうようなので、ちょっと綺麗に判定はできなそうです。 ( audioSource.time + Time.deltaTime ) > audioSource.clip.length で判定すれば次のフレームで終わりそうだなってのは判定できそうですが、これも抜けがありそうなので、もうちょい綺麗に判定できたらうれしいです。
buibui80

2016/10/07 01:03

audioSource.timeは0に戻ってしまうんですね。 今のフレームで ( audioSource.time + Time.deltaTime ) > audioSource.clip.length && audioSource.IsPlaying() である時に終了前フラグを立てて、 次のフレーム以降に audioSource.time == 0.0f && !audioSource.IsPlaying() であれば再生終了とするのはどうでしょうか? 自分は単純に再生開始から再生中はTime.deltaTimeを進行時間用変数に加算して audioSource.clip.length以上になったフレームで終了としてしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問