听觉触发器:
using System.Collections;
using UnityEngine;
/// <summary>
/// 听觉触发器
/// </summary>
namespace AI.Perception
{
public class SoundTrigger:AbstractTrigger
{
//传播距离
public float caseDistance = 5;
//有效时间
public float lifeTime = 3;
//初始是否有效
public bool awakePlay = false;
public new void Start()
{
base.Start();
//设置类型
triggerType = TriggerType.Sound;
this.enabled = awakePlay;
}
public void OnEnable()
{
StartCoroutine(TimeDown());
}
private IEnumerator TimeDown()
{
//等待生命期之后
yield return new WaitForSeconds(lifeTime);
//禁用当前组件
this.enabled = false;
}
public override void Init(){}
}
}
听觉感应器:
using UnityEngine;
/// <summary>
/// 听觉感应器
/// </summary>
namespace AI.Perception
{
public class SoundSensor : AbstractSensor
{
//听力范围,听觉距离
public float hearDistance;
protected override bool TestTrigger(AbstractTrigger trigger)
{
//判断trigger是否是声音触发器
if(trigger is SoundTrigger)
{
//如果是,转类型
var tempTrigger = trigger as SoundTrigger;
//触发器与传感器的距离
var distance = Vector3.Distance(transform.position,
tempTrigger.transform.position);
//听力范围 + 传播范围 > 触发器与传感器的距离
return tempTrigger.caseDistance + hearDistance > distance;
}
return false;
}
public override void Init() { }
}
}
原文地址:https://blog.csdn.net/weixin_49397205/article/details/113446712
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。