3D Unity - 使用“周边视觉”实施光线投射可见性测试

问题描述 投票:0回答:1

背景: 我正在使用 navmesh 与玩家和敌人 AI 制作 3D 统一游戏。它的工作原理是,当玩家处于敌人的视线范围内时,它会追击他,而当玩家处于攻击范围内时,敌人会射击他。

问题: 我用来进行可见性测试(检查玩家是否在视线/攻击范围内)的方法是使用物理。重叠球体,但这种方法可以使球体穿过墙壁,这意味着玩家可以在视线内范围,即使敌人和玩家之间有墙。我现在已经有了一个光线投射系统(下面的代码片段),但我的问题是,当我希望他也能够检测到敌人时,玩家必须直接位于敌人前面才能处于视线范围内玩家通过他的“周边视野”。有谁知道如何实现这种事情?

raycast code

我会尽力回答任何问题,任何帮助将不胜感激。

c# unity-game-engine 3d
1个回答
0
投票

您应该创建一条从玩家朝向敌人的射线,即

new Ray(playerPosition, enemyPosition - playerPosition)

您可能还想发送多条射线,例如向敌人边界框的每个角发送一条射线。或者从敌人的每只眼睛向玩家随机选择的点发射一束光线。这应该有助于提高准确性,因为玩家和敌人都不是点大小的物体,可能会被微小物体遮挡。

© www.soinside.com 2019 - 2024. All rights reserved.