ARFoundation으로 ARCore 사용하기 - ARPlaneManagerEvent
ARFoundation에서 바닥면을 인식 할때 나오는 이벤트를 알아보겠습니다.
AR Session Origin에 추가했던 ARPlaneManager를 이용해서 이벤트를 추가해 보겠습니다.
이벤트를 작성할 스크립트를 추가합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
public class ARPlaneManagerEvent : MonoBehaviour
{
public GameObject spawnObject;
public ARPlaneManager arPlaneManager;
private Dictionary<TrackableId, GameObject> spawnObjects;
// Start is called before the first frame update
void Start()
{
arPlaneManager.planesChanged += ArPlaneManager_planesChanged;
}
private void ArPlaneManager_planesChanged(ARPlanesChangedEventArgs obj)
{
List<ARPlane> addedPlanes = obj.added;
if (addedPlanes.Count > 0)
{
foreach (ARPlane plane in addedPlanes)
{
GameObject instance = Instantiate(spawnObject, plane.center, plane.transform.rotation);
spawnObjects.Add(plane.trackableId, instance);
}
}
List<ARPlane> removedPlanes = obj.removed;
if (removedPlanes.Count > 0)
{
foreach (ARPlane plane in removedPlanes)
{
GameObject destoryTarget = spawnObjects[plane.trackableId];
Destroy(destoryTarget);
}
}
}
}
ARPlaneManager 객체를 받아와서 아래처럼 이벤트를 생성해주면 added, removed, updated 이벤트를 사용할 수 있습니다.
arPlaneManager.planesChanged += ArPlaneManager_planesChanged;
위 예제는 면을 인식할 때 면 중앙에 오브젝트를 생성해주는 코드 입니다.
빌드 후 테스트 해봅시다.
'Unity > ARCore' 카테고리의 다른 글
ARFoundation으로 ARCore 사용하기 - 이미지 트래킹 (0) | 2020.10.28 |
---|---|
ARFoundation으로 ARCore 사용하기 - 객체를 중심으로 세상을 이동 (0) | 2020.10.27 |
ARFoundation으로 ARCore 사용하기 - 세션 상태 (0) | 2020.10.27 |
ARFoundation으로 ARCore 사용하기 - PointCloud, Plane Manager (0) | 2020.10.27 |
ARFoundation으로 ARCore 사용하기 - 바닥면에 객체 생성 (0) | 2020.10.27 |