유니티 IsPointerOverGameObject 활용한 겹치는 오브젝트 구별법

2020. 11. 25. 13:45유니티실습

반응형
728x170

안녕하세요 유니티 비기너입니다.

이번 시간에는 IsPointerOverGameObject에 대해 알아보겠습니다.

 

터치로 실행되는 오브젝트와 UI 이미지, 버튼 이벤트로 실행되는 오브젝트들이 존재할 때

각각의 오브젝트가 겹쳐있는 경우 한쪽 기능만 실행을 시키고 싶지만

양쪽 모두 실행이 되어버리는 경우가 종종 있습니다.

 

IsPointerOverGameObject 기능을 활용하면 위의 문제를 해결할 수 있습니다.

※ IsPointerOverGameObject는 pointer가 UI에 있는 경우 True를 아닌 경우에는 false를 반환합니다.

 

 

결과 화면

화면 전체 구간에 마우스 클릭 시 총알을 발사하는 스크립트가 포함되어있습니다.

적용 전

IsPointerOverGameObject 가 적용되지 않은 경우

버튼 이벤트와, 스크립트에 적용된 총알 생성하는 코드 부분이 같이 실행됩니다.



적용 후

IsPointerOverGameObject 가 적용되어 있는 경우

스크립트에 적용된 if문에 IsPointerOverGameObject 가 false 을 반환하여 총알을 생성하지 않습니다.

스크립트

public class TapManager : MonoBehaviour
{
    public Transform plane;
    public GameObject bullet;

    void Update() {
        if (Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject() ) {
            Instantiate(bullet, plane.position, Quaternion.identity);
        }
    }    
}

화면 전체에 마우스 클릭 시 총알을 생성하는 코드이며  IsPointerOverGameObject를 활용하여 

UI버튼 영역에서는 false를 가져와 총알을 생성하지 않습니다. 

반응형
그리드형