[Unity 2D] Camera View 내 적 감지

2020. 7. 26. 17:38[Unity] 게임 개발

반응형
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraFunc : MonoBehaviour
{
    Camera selectedCamera;
    public bool CanWarp = false;
    // Start is called before the first frame update
    void Start()
    {
        selectedCamera = GameObject.Find("Main Camera").GetComponent<Camera>();
    }
    void Update()
    {
        CheckEnemy(GameObject.FindGameObjectWithTag("Enemy"));
    }
    public bool CheckEnemy(GameObject _Enemy)//카메라 뷰 안에 적이 있는지 없는지
    {
        if (GameObject.FindGameObjectWithTag("Enemy") != null)
        {
            Vector3 screenPoint = selectedCamera.WorldToViewportPoint(_Enemy.transform.position);
            bool OnScreen = screenPoint.x > 0 && screenPoint.x < 1 && screenPoint.y > 0 && screenPoint.y < 1;

            if (OnScreen == false)
            {
                CanWarp = true;
            }
            else
            {
                CanWarp = false;
            }
            return CanWarp;
        }
        else
        {
            return CanWarp = true;
        }
    }
}

 

 현 카메라 뷰 의 x,y축 - (0,0) ~ (1,1) 안에 적이 존재하는지를 체크하는 코드 

 

bool형 함수 CheckEnemy에서 체크 대상이 없으면 return 값이 Null 이 되기 때문에 Nullreperence 오류 발생

Tag - Enemy 가 있는지 없는지를 판별하여 Nullreperence 오류 예외처리.

반응형