유니티 C# 간단한 VR 게임 만들기 간단 구현

반응형

코드 작성

using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;

public class VRGameController : MonoBehaviour
{
    // 왼손과 오른손에 할당된 XR Controller
    public XRController leftController;
    public XRController rightController;

    // 잡을 수 있는 객체의 프리팹
    public GameObject throwableObjectPrefab;

    // 던질 힘을 조절하는 변수
    public float throwForce = 10f;

    void Update()
    {
        // 왼손과 오른손의 트리거 버튼 입력을 확인하여 객체를 생성하고 던집니다.
        if (leftController.inputDevice.TryGetFeatureValue(CommonUsages.triggerButton, out bool leftTrigger) && leftTrigger)
        {
            ThrowObject(leftController);
        }

        if (rightController.inputDevice.TryGetFeatureValue(CommonUsages.triggerButton, out bool rightTrigger) && rightTrigger)
        {
            ThrowObject(rightController);
        }
    }

    void ThrowObject(XRController controller)
    {
        // 컨트롤러 위치에 객체를 인스턴스화합니다.
        GameObject thrownObject = Instantiate(throwableObjectPrefab, controller.transform.position, controller.transform.rotation);

        // 객체에 Rigidbody 컴포넌트를 추가합니다.
        Rigidbody rb = thrownObject.GetComponent<Rigidbody>();
        if (rb == null)
        {
            rb = thrownObject.AddComponent<Rigidbody>();
        }

        // 컨트롤러의 방향으로 힘을 가하여 객체를 던집니다.
        rb.AddForce(controller.transform.forward * throwForce, ForceMode.Impulse);
    }
}
반응형