我需要知道相机何时停止停止将其返回到池中。 我尝试了几件事,但没有成功,我想说明一下相机仅在X轴上跟随玩家,它是3D的,但它是侧滑视图游戏。 顺便说一句,我不使用MonoBehaviour,所以请避免建议OnBecameInvisible和亲戚。
这是我两次失败的尝试。
internal static bool IsVisible(this Renderer renderer)
{
Plane[] planes = GeometryUtility.CalculateFrustumPlanes(Camera.main);
return GeometryUtility.TestPlanesAABB(planes, renderer.bounds);
}
internal static void IsVisible(this GameObject go)
{
var screenPoint = Camera.main.WorldToScreenPoint(go.transform.position);
screenPoint.x = Mathf.Clamp01(screenPoint.x);
if (screenPoint.x > .05f)
{
Debug.Log("Visible");
}
else Debug.Log("Invisible");
}
答案 0 :(得分:0)
简单:
if(!GetComponent<Renderer>().isVisible){
//Whatever you want to do here
}
如果遇到问题,请参阅:
https://docs.unity3d.com/ScriptReference/Renderer-isVisible.html
https://forum.unity.com/threads/how-do-i-use-renderer-isvisible.377388/
答案 1 :(得分:0)
如果您需要知道对象何时移入和移出屏幕,最简单的解决方案是 MonoBehaviour.OnBecameVisible()与.OnBecameInvisible()配对
编辑:好的,我刚刚读到您没有使用MonoBehaviours-请问为什么? Monohevaiour只为您实际实现的方法付出了代价,仅从MonoBehaviour继承而来并没有那么多开销