この記事では、特定のオブジェクトがカメラに写っているかどうかを判別する方法を解説します。
OnBecameVisible()
と OnBecameInvisible()
は MonoBehaviour
のコールバックの一種で以下のような特徴があります。
例えば、以下のようなコードを Renderer が付いているオブジェクトにアタッチするだけで簡単に見えているか判別することができます。
using UnityEngine;
public class Visible : MonoBehaviour
{
public bool IsVisivle { get; private set; }
private void OnBecameVisible()
{
IsVisivle = true;
}
private void OnBecameInvisible()
{
IsVisivle = false;
}
}
また、オブジェクトが見えてない時(カメラに写ってない時)に enable = false
とすることで計算量を減らして軽くすることができる。
Renderer
の isVisible
は、可視状態ではtrue
、不可視状態ではfalse
を返します。
見えているときにupdate
などで連続で処理をさせたりできます。
using UnityEngine;
public class Square : MonoBehaviour
{
private SpriteRenderer _spriteRenderer;
void Start()
{
_spriteRenderer = GetComponent<SpriteRenderer>();
}
void Update()
{
if(_spriteRenderer.isVisible)
{
Debug.Log("見えている");
}
else
{
Debug.Log("見えていない");
}
}
}