-
우리 앱에서 실험을 처음 시작할 때 평면 인식 후 화면을 한번 터치하여 책상을 배치한다.
그런데 책상을 배치하려고 터치한 것이 아니라, 일시 정지하고 싶어서 좌측 상단의 정지 버튼을 누른 경우라면?
책상 배치와 정지 패널 활성화가 같이 이루어진다.
정지버튼을 터치한 것 / 책상배치를 위해 화면을 터치한 것을 구별하고 싶은데, 그렇지 못해서 두 동작이 동시에 일어나버리는 것.
이를 막기 위해서
EventSystem.current.IsPointerOverGameObject()
를 사용하면 된다. 터치한 부분이 UI이면 True, 아니면 False를 반환한다고 한다.
void Update() { if (spawnedObject == null && placementPoseIsValid && Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) { if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) return; else { ARPlaceObject(); objectGuide.SetActive(false); } } UpdatePlacementPose(); UpdatePlacementIndicator(); }
이 부분은 책상을 터치하면 평면에 배치하는 부분이다.
사용자 터치가 들어와서 ARPlaceObject();가 호출되면 실험프리팹을 카메라 화면상에 Spawn 한다.
여기에 위 메서드를 적용한 조건문을 추가하여
UI 터치이면 return 하고, 그렇지 않을 경우에만 ARPlaceObject()를 호출하도록 코드를 수정해주었다.
'[Unity] Projects & Study > HandiLab - AR 과학 실험' 카테고리의 다른 글
[Unity][HandiLab] AR에서의 Z축 드래그 고정 (0) 2022.07.07 [Unity][HandiLab] 오브젝트가 깜빡깜빡하는 효과 주기 (0) 2022.07.06 [Unity][HandiLab] UI카메라와 Fade 효과 (0) 2022.07.06 [Unity][HandiLab] 디자이너를 구했다! (0) 2022.07.06 [Unity][HandiLab] 실험 가이드 - Typing효과와 Audio Source (0) 2022.07.06