
제스쳐를 활용하는 예시 두가지를 설명하겠습니다.첫번째는 탭제스쳐를 통해 노드를 찾아서 숨기는 기능입니다. 노드가 만약 프로젝트에서처럼 불꽃이라면 노드를 숨김으로써 불꽃이 꺼지고 켜지는 애니메이션을 구현할 수 있습니다. 첫번째 코드줄에서 sceneView에서의 제스쳐의 위치를 찾고, 히트테스트 메서드를 실행한 후에 테스트로 찾은 결과값을 hitResult의 복수형인 hitResults로 저장합니다. 히트 테스트는 주어진 2D 화면 좌표(여기서는 제스쳐를 통한 로케이션 좌표입니다) 에서 3D 공간의 객체를 검색하는 메서드로 히트테스트의 결과로 화면에서 가장 가까운 객체부터 차례로 배열에 담깁니다. hitResults 는 SCNHitTestResult 객체의 배열이 되고 장면 요소에 대한 장면 공간 또는 뷰 공간 검색 결과에 대한 정보가 담겨있습니다.
해당 배열의 첫 번째 요소를 가져와서 hitResult로 저장합니다. 첫 번째 요소는 화면에서 가장 가까운 객체를 나타냅니다. hitResult 요소에서 node 정보를 가져와서 selectedNode에 저장합니다.
이렇게 찾은 selectedNode 가 최상위 노드가 될때까지 while문을 반복한 후에 최상위 노드를 찾고 selectedNode로 설정하였으면 이제부터는 내가 찾는 노드이름이 나올때까지 childNode로 찾아 내려갑니다. 여기서는 Cone_3하위의 Object_4노드임을 scn파일 구조를 통해 확인했기 때문에 해당 노드를 찾습니다. candle의 불꽃을 찾아서 해당 노드가 hidden 상태라면 탭제셔쳐를 통해 보여지도록 보여지지않는 꺼진 상태라면 눌러서 켜지도록 로직을 구현했습니다.