Unity检测物体是否在摄像机内

 在Unity制作游戏的过程中,我们通常会有这样的需求,比如将屏幕外的人隐藏,提升游戏性能,或者是如果某些物体不在屏幕内,就提示玩家。

对于这些需求,我们使用到了Unity内置的一套函数,也就是下面两个

    // 进入摄像机视野回调,每当物体进入视野时调用一次
    void OnBecameVisible()

    // 离开摄像机视野回调,每当物体离开视野时调用一次
    void OnBecameInvisible()

触发条件

挂载当前脚本的物体,需要拥有MeshRenderer或其他功能相似的Renderer组件。

疑难问题

有时候,我们发现虽然物体没有在摄像机视野内,但是OnBecameVisible函数也被触发了,那这是为什么呢。经过测试,我发现,如果物体会投射阴影,那么如果阴影被投射到屏幕之内,也是算作物体进入摄像机视野的,所以大家一定要注意这个要点。

具体代码

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

public class CameraCheck: MonoBehaviour
{
    private bool isInVisualField;

    void OnBecameVisible()
    {
        isInVisualField = true;
    }

    void OnBecameInvisible()
    {
        isInVisualField = false;
    }

}

猜你喜欢

转载自blog.csdn.net/HelloCSDN666/article/details/125184873