Gemini 제미나이 실습1

  • 게임이 시작되면 게임오브젝트가 사라지는 스크립트 'hide.cs'를 만들어줘

  • 사라질 대상 Object를 Hierarchy 에서 선택 > inpector 창에 script를 드래그 드랍하여 등록한다.

  • hide.cs 파일의 이름을 click_hide.cs로 바꾸고. 게임시작되면 사라지는 기능 삭제, 마우스로 클릭하면 사라지게 해줘

  • 파일명이 변경되면 기존 스크립트는 missing(유실) 상태가 되어 새로 등록해야 합니다.
  • 따라서 되도록이면 파일명은 한번에 제대로 정하고 파일을 삭제하거나 이름변경 하지 않도록 합니다.

명령어 입력 유의사항

  • MetaXRGrabInteractable가 WhenSelectEntered 되었을때 AudioSource를 Play해줘 - 아주 구체적이고 방법까지 명시되어있는 요청
  • ⚠️ Meta XR All-in-One SDK에서 오브젝트를 잡았을때 소리가 재생되게 해줘 - 아주 구체적이진 않지만 어느정도 알아들을 수 있는 요청
  • 물체를 손으로 잡으면 소리가 나게 해줘 - 구체적이지 않고 방법을 알수 없는 요청(AI가 임의로 방법을 찾게됨 - 작동하지 않을 가능성 높음)

Meta XR All-in-One SDK

Meta XR All-in-One SDK에서의 Grab 관련 구성

주요 클래스

클래스 설명
MetaXRGrabInteractable 잡을 수 있는 오브젝트 (Grabbable)
MetaXRGrabInteractor 손/컨트롤러 쪽의 Grabber
MetaXRDirectInteractor 직접 손 트래킹 기반 상호작용
MetaXRRayInteractor 레이 기반 상호작용 (UI 등)

Grab 관련 주요 이벤트

MetaXRGrabInteractable 컴포넌트에는 UnityEvent 기반 이벤트가 있습니다.

이벤트 이름 트리거 시점
WhenSelectEntered 오브젝트를 잡을 때
WhenSelectExited 오브젝트를 놓을 때
WhenHoverEntered 손/커서가 근처에 왔을 때
WhenHoverExited 손/커서가 떠났을 때
WhenActivated 트리거(Primary action) 눌렀을 때
WhenDeactivated 트리거에서 손 뗐을 때

Inspector에서 직접 이벤트를 연결할 수 있으며, C# 코드로도 구독 가능합니다.


코드 예시 (Meta XR All-in-One SDK)

using Meta.XR.Interaction;
using UnityEngine;

public class GrabEventExample : MonoBehaviour
{
    [SerializeField] private MetaXRGrabInteractable grabbable;

    void Start()
    {
        grabbable.WhenSelectEntered.AddListener(OnGrabBegin);
        grabbable.WhenSelectExited.AddListener(OnGrabEnd);
    }

    private void OnGrabBegin(SelectEnterEventArgs args)
    {
        Debug.Log($"{grabbable.name} 잡음 by {args.interactorObject}");
    }

    private void OnGrabEnd(SelectExitEventArgs args)
    {
        Debug.Log($"{grabbable.name} 놓음 by {args.interactorObject}");
    }
}