• 根据声音获取对象


    // Cast a sphere with the desired radius. Check each object's audio source to see if audio is playing. If audio is playing
        // and its audibility is greater than the audibility threshold then return the object heard
        /// <summary>
        /// Withins the hearing range.
        /// </summary>
        /// <returns>The hearing range.</returns>
        /// <param name="transform">玩家</param>
        /// <param name="linearAudibilityThreshold">Linear audibility threshold.</param>
        /// <param name="hearingRadius">可以听到的范围</param>
        /// <param name="objectLayerMask">对象层遮罩</param>
        public static Transform WithinHearingRange(Transform transform, float linearAudibilityThreshold, float hearingRadius, LayerMask objectLayerMask)
        {
            Transform objectHeard = null;
            var hitColliders = Physics.OverlapSphere(transform.position, hearingRadius, objectLayerMask);//获取范围内的对象
            if (hitColliders != null) {
                float maxAudibility = 0;
                AudioSource colliderAudioSource;
                for (int i = 0; i < hitColliders.Length; ++i) {
                    // Check to see if the hit agent has an audio source and that audio source is playing
                    if ((colliderAudioSource = hitColliders[i].GetComponent<AudioSource>()) != null && colliderAudioSource.isPlaying) {//对象发出声音
                        // The audio source is playing. Make sure the sound can be heard from the agent's current position
                        var audibility = colliderAudioSource.volume / Vector3.Distance(transform.position, hitColliders[i].transform.position);//声音衰减
                        if (audibility > linearAudibilityThreshold) {//声音大于衰减阀值
                            if (audibility > maxAudibility) {//获取声音最大的那个
                                maxAudibility = audibility;
                                objectHeard = hitColliders[i].transform;
                            }
                        }
                    }
                }
            }
            return objectHeard;
        }
  • 相关阅读:
    vs编译出现 fatal error LNK1281:无法生成 SAFESEH 映像
    $apply()和$digest()——angular
    JS获取URL中参数值
    NeDB——node嵌入式数据库
    VS Code常用插件
    js断点调试
    VS Code 使用Git进行版本控制
    VS Code快捷键
    用户tokenId
    node-webkit-updater——NW.js自动更新
  • 原文地址:https://www.cnblogs.com/88999660/p/3732313.html
Copyright © 2020-2023  润新知