感知=触发器+感知器+事件管理器
1、视觉感知:
视锥体是模拟视觉地基本方法,以眼睛为中心,一定锥角范围内为检测区域
除了判断物体是否在视锥体范围内外,还要进行视线测试(LOS),才能确定最终结果
原则上以玩家为中心,限定AI角色的智能。
对于AI角色看到需要做出响应的物体,添加Trigger派生类SightTrigger作为触发器
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SightTrigger : Trigger {
public override void Try(Sensor sensor)
{
//如果感知器能感觉到这个触发器,那么向感知器发出通知,感知体做出相应的决策或行动
if (isTouchingTrigger(sensor))
{
sensor.Notify(this);
}
}
//判断感知器是否能感知到这个触发器
protected override bool isTouchingTrigger(Sensor sensor)
{
GameObject g = sensor.gameObject;
//如果这个感知器能够感知视觉信息
if (sensor.sensorType == Sensor.SensorType.sight)
{
RaycastHit hit;
Vector3