前提・実現したいこと
Mac 10.13.6 / Unity 2018.3.4f1 / c#
unityもプログラミングも初心者です。
UI上のObjectが、スクロールで指定のエリアに入ったら、複数のvideoclipからランダムに1つ選んで再生させたいです。
Tagで別のObjectからVideoPlayerを取得>衝突判定を用いて、再生まではできました。
発生している問題・エラーメッセージ
Tagのものがすべて再生されてしまいます。どれか一つだけにしたいです。
以下のスクリプトをどのように編集すると良いでしょうか。
宜しくお願い致します。
該当のソースコード
using System.Collections;
using UnityEngine;
using UnityEngine.Video;
using UnityEngine.UI;
public class MoviePlayerRandom : MonoBehaviour
{
private VideoPlayer mPlayerRandom;
public RawImage rImage;
public bool check = false;
private GameObject[] videoObjects;
void Start ()
{
// タグでVideoSourceを持つゲームオブジェクト(複数)を見つける videoObjects = GameObject.FindGameObjectsWithTag ( "VideoRandom" ); // ”VideoRandom”タグがついたゲームオブジェクトからVideoPlayerを取得 mPlayerRandom = videoObjects[0].GetComponent <VideoPlayer> (); mPlayerRandom = videoObjects[1].GetComponent <VideoPlayer> ();
}
void Update ()
{
// 内部に保存しているテクスチャを設定
if (mPlayerRandom.texture != null && !check)
{
Debug.Log ("Set");
// ランダムにオブジェクトを選択
var VideoRandom = videoObjects[Random.Range(0, videoObjects.Length)];
rImage.texture = mPlayerRandom.texture;
check = true;
}
}
void OnTriggerEnter(Collider other)
{
Debug.Log (other.name + "Enter");
}
// 重なり中の判定
void OnTriggerStay(Collider other)
{
{
Debug.Log (other.name + "Stay");
}
//gameObjectがMoviePlayAreaと衝突している場合
if (other.gameObject.name == "MoviePlayArea")
{
mPlayerRandom.GetComponent<VideoPlayer>().Play();
}
}
// 重なり離脱の判定
void OnTriggerExit(Collider other)
{
{
Debug.Log (other.name + "Exit");
}
if(other.gameObject.name == "MoviePlayArea")
{
mPlayerRandom.GetComponent<VideoPlayer>().Pause();
}
}
}
試したこと
Tagで別のObjectからVideoPlayerを取得>衝突判定を用いて、再生までのヒエラルキー
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/07 01:03
2019/05/07 09:51
2019/05/08 00:30
2019/05/08 12:08