如何解决Unity OnBecameInvisible() 虽然对象仍然可见
我有一个网格渲染器和一个分配给一个旋转球体的脚本,其中有一个洞。球体在层次结构中没有特定或特殊的位置,它就在相机旁边。脚本部分如下所示:
void OnBecameInvisible() {
Destroy(gameObject);
}
问题是,当我用我的球经过球体时,即使球体仍然有一半可见,它也会被删除。我在场景中没有其他相机,我使用的一个被标记为主相机。
解决方法
不要使用 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);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。