2021-07-24

  • 视频范围检测操作

```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;

public class AudioManager : MonoBehaviour
{
    public GameObject tarGet;
    public VideoPlayer[] vedios;
    public GameObject[] vedObjs;
    public float distance;
    private float checkTime;
    float temp;
    private const float maxDis = 4f;
    private VideoPlayer videoPlayer;
    void Start()
    {
        //videoPlayer = GetComponent<VideoPlayer>();
        //videoPlayer.audioOutputMode = VideoAudioOutputMode.Direct;
        
        vedios = new VideoPlayer[transform.childCount];
        vedObjs = new GameObject[transform.childCount];
        for (int i = 0; i < transform.childCount; i++)
        {
            vedObjs[i] = transform.GetChild(i).gameObject;
            vedios[i] = transform.GetChild(i).gameObject.GetComponent<VideoPlayer>();
        }
        for (int i = 0; i < vedObjs.Length; i++)
        {
            vedObjs[i].GetComponent<VideoPlayer>().SetDirectAudioVolume(0,0.1f);
        }

    }

    void Update()
    {

        //if (Input.GetKeyDown(KeyCode.Space))
        //{
        //    //print(videoPlayer.canSetDirectAudioVolume);
        //    //videoPlayer.isLooping = true;
        //    //videoPlayer.SetDirectAudioVolume(0,0.5f);
        //}
        if (checkTime >= 0.5f)
        {
            Judge();
            checkTime = 0;
        }
        checkTime += Time.deltaTime;

    }

    private float Judge()
    {

        float[] item = new float[transform.childCount];
        for (int i = 0; i < transform.childCount; i++)
        {
            item[i] = Vector3.Distance(tarGet.transform.position, vedObjs[i].transform.position);
            //print(Vector3.Distance(tarGet.transform.position, vedObjs[i].transform.position));
            temp = item[0];
        }
        for (int i = 0; i < item.Length; i++)
        {
            if (item[i] <= temp)
            {
                temp = item[i];
            }
        }
        ChangeVolme(temp);
        //Debug.Log(temp);
        return temp;
    }
    private void ChangeVolme(float temp)
    {
        for (int i = 0; i < vedObjs.Length; i++)
        {
            if (temp == Vector3.Distance(tarGet.transform.position, vedObjs[i].transform.position))
            {
                //Debug.Log(vedObjs[i].name);
                Value(vedObjs[i].name);
            }
        }

    }
    private void Value(string name)
    {
        for (int i = 0; i < vedObjs.Length; i++)
        {
            //vedObjs[i].GetComponent<AudioSource>().volume = 0f;
            vedObjs[i].GetComponent<VideoPlayer>().SetDirectAudioVolume(0, 0f);
        }
        for (int i = 0; i < vedObjs.Length; i++)
        {
            if (vedObjs[i].name == name)
            {
                VideoPlayer audi = vedObjs[i].GetComponent<VideoPlayer>();
                //audi.volume = 1 - temp / maxDis;
                audi.SetDirectAudioVolume(0,1-temp/maxDis);
            }
        }

    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值