射出几个 Raycasts 来检查一个物体

Shoot out several Raycasts to check for an object

我正在为我的游戏制作一个敌人,它会一直跟着你,直到它再也看不到你为止。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class pathfindingPlayer : MonoBehaviour
{
    RaycastHit hit;
    NavMeshAgent _navMeshAgent;

    void Awake() => _navMeshAgent = GetComponent<NavMeshAgent>();

    public bool seen;
    public float noticeDistance = 7f;

    void Update()
    {
        Debug.DrawRay(transform.position, transform.forward * noticeDistance, Color.red);
        Ray PlayerRay = new Ray(transform.position, Vector3.back);

        if(Physics.Raycast(PlayerRay, out RaycastHit hitInfo, noticeDistance))
        {
            if (hitInfo.collider.CompareTag("Player"))
            {
                Vector3 SeenPlayer = hitInfo.point;
                _navMeshAgent.SetDestination(SeenPlayer);
            }
        }
    }
}

现在的问题是只射出一个Raycast。因此敌人只会朝一个方向跑。有没有办法为此添加多个光线投射,或者我需要重写代码吗?提前致谢

你可以创建一个函数来进行光线投射并每隔 x 秒调用一次,但对于你想要实现的目标,我会尝试在敌人身上放置一个圆形对撞机,其半径为敌人能看到的距离,并确保将对撞机设置为触发器,如果​​玩家触发对撞机,则使其朝向玩家