Unity OnBecameInvisible() 触发,但对象仍然可见
Unity OnBecameInvisible() fires though object is still visible
我有一个网格渲染器和一个脚本,它分配给一个带有孔的旋转球体。球体在层次结构中没有特定或特殊的位置,它就在相机旁边。脚本部分如下所示:
void OnBecameInvisible() {
Destroy(gameObject);
}
问题是,当我用我的球传球时,即使球体仍然是半可见的,它也会被删除。场景中我没有其他相机,我用的是主相机。
Video
不要使用 OnBecameInvisible
来剔除您经过的对象,只需检查它是否在 Update
中的相机后面:
Camera mainCam;
[SerializeField] float maxBehindDistance = 0.5f;
void Awake() { mainCam = Camera.main; }
void Update()
{
Vector3 relPos = mainCam.transform.InverseTransformPoint(transform.position);
if (relPos.z < -maxBehindDistance)
{
Destroy(gameObject);
}
}
我有一个网格渲染器和一个脚本,它分配给一个带有孔的旋转球体。球体在层次结构中没有特定或特殊的位置,它就在相机旁边。脚本部分如下所示:
void OnBecameInvisible() {
Destroy(gameObject);
}
问题是,当我用我的球传球时,即使球体仍然是半可见的,它也会被删除。场景中我没有其他相机,我用的是主相机。
Video
不要使用 OnBecameInvisible
来剔除您经过的对象,只需检查它是否在 Update
中的相机后面:
Camera mainCam;
[SerializeField] float maxBehindDistance = 0.5f;
void Awake() { mainCam = Camera.main; }
void Update()
{
Vector3 relPos = mainCam.transform.InverseTransformPoint(transform.position);
if (relPos.z < -maxBehindDistance)
{
Destroy(gameObject);
}
}