如何查看对象是否在墙后面以及它是否在视野中?

时间:2014-07-16 20:01:43

标签: unity3d

我制作了这段代码,看看它是否在FOV中有效但是如果我在远方,如果我在他身边,那么返回的数字大于0,这意味着我&#当我不在的时候,在他面前。

Vector3 objectNormalized = Vector3.Normalize(transform.position);
Vector3 targetNormalized = Vector3.Normalize(target.position);
Vector3 forward = transform.TransformDirection(transform.forward);
Vector3 pos = targetNormalized - objectNormalized;

另外,我怎么能看到它是在墙后还是在另一个物体后面?我正在编写AI,所以我真的需要这个。

1 个答案:

答案 0 :(得分:1)

为了检测您和对象之间是否没有对撞机,请从相机到对象中心执行physics raycast,并检查RaycastHit.collider.gameObject是否是您要射向的对象。根据您的使用情况,您可能需要尝试一些光线投射到模型的不同部分。

至于在视野范围内,您有程序TestPlanesAABB或基于事件的OnBecameVisibleOnBecameInvisible。如果您决定使用TestPlanesAABB,请记住在相机移动时更新平面阵列,而不是像示例中那样开始。