반응형
코드 작성
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);
}
}
반응형