[Unity] AR_Foundation: indicator 만들기
728x90

Materials - Create - Material(M_Indicator)

png 사진 Materials에 저장 - Inspector - Alpha is Transparency - Apply

 

M_Indicator - Albedo 왼쪽 상자에 png 드래그 앤 드롭

 

Hierarchy - 3D Object - Quad(Indicator)

 

Assets - Create Folder(Scripts) - Create - C# Script(CarManager)

XR Origin에 드래그 앤 드롭

더블클릭 해 코드 열기

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;

public class CarManager : MonoBehaviour
{
    public GameObject indicator;
    ARRaycastManager arManager;

    // Start is called before the first frame update
    void Start()
    {
        // 시작하자마자 인디케이터 비활성화
        indicator.SetActive(false);
        // AR Raycast Manager 컴포넌트를 가져옴
        arManager = GetComponent<ARRaycastManager>();
    }

    // Update is called once per frame
    void Update()
    {
        DetectGound();
    }

    // 바닥 감지 및 indicator 출력 함수
    void DetectGound()
    {
        Vector2 screenSize = new Vector2(Screen.width * 0.5f, Screen.height * 0.5f);
        List<ARRaycastHit> hitInfos = new List<ARRaycastHit>();

        // ray를 이용해 바닥 감지
        if(arManager.Raycast(screenSize, hitInfos, UnityEngine.XR.ARRSubSystems.TrackableType.Planes))
        {
            // 인디케이터 활성화
            indicator.SetActive(true);
            // 인디케이터의 위치와 회전 값을 레이가 닿은 지점에 일치
            indicator.transform.position = hitInfos[0].pose.position;
            indicator.transform.rotation = hitInfos[0].pose.rotation;
            // 인디케이터 위치를 위로 0.1미터 올림
            indicator.transform.position += indicator.transform.up * 0.1f;
        }
        else
        {
            indicator.SetActive(false);
        }
    }
}

Hierarchy - Create Empty(Marker) - Hierarchy Indicator 드래그 앤 드롭

XR Origin - Inspector - Car Manager - Indicator - Marker 드래그 앤 드롭

728x90