본문 바로가기
IT

[유니티/VR 콘텐츠 제작] 7. 사용자가 잡고 올라갈 수 있는 사다리 설치 + 핸들, 조종석 상호작용 만들기

by 배애앰이 좋아 2024. 2. 6.
반응형

 

목표 : 유니티 VR 콘텐츠 제작하는 방법에 대해 알아봅시다.

 

https://www.youtube.com/watch?v=pm9W7r9BGiA&list=PLpEoiloH-4eM-fykn_3_QcJ-A_MIJF5B9&index=3

영상을 기반으로 작성된 글입니다.

사용한 유니티 버전 : 2022.3.16f
사용한 VR 기기 : meta quest 3

 

 

1. 사용자가 잡고 올라갈 수 있는 사다리 설치

 

다음과 같이 위치에서 사다리 오브젝트를 꺼내서 설치해줍니다. 그 다음에 다음과 같으 컴포넌트를 붙여줍니다.

 

사다리 하위 오브젝트를 보면 두 개의 handle 이 붙여있는데 두 개를 살펴보면 아래 빨간 부분이 다른 것을 확인할 수 있습니다. 해당 부분의 설정을 통해 사용자가 어떻게 움직일 수 있는지 정의합니다.

 

마찬가지로 무엇가를 잡고 오를 수 있게 사용자 객체에 아래와 같은 컴포넌트를 붙이고 세팅해줍니다.

 

테스트를 해보면, 사용자가 사다리와 상호작용해서 잘 오르락 내리락 하는 것을 확인할 수 있습니다.

 

 

2. 핸들, 조종석 상호작용 만들기

 

 

현재 창문이 너무 불투명하기 때문에 좀 더 투명하게 바꾸기 위해 아래와 같이 바꿔줍니다.

 

그 다음 조종석이 필요하니 테이블과 조정석, 핸들 오브젝트를 꺼내고 사이즈 조절을 해줍니다.

또한 Lever 에서 value 를 해체해줍니다. (꺼진 상태에서 시작하기 위해)

 

진행하기 전에 함선을 옮기기에는 많은 상호작용들이 있어서 최대한 건들지 않는 쪽으로 진행하고자 합니다.

고로 실제 함선을 움직이는 것이 아닌 외부 객체를 움직여서 마치 사용자에게는 우리가 움직이는 듯한 착시를 주고자 합니다. 

 

또한, 핸들을 이용해서 방향을 레버를 이용해서는 앞으로 가거나 멈추거나 하도록 설정해주고자 합니다.

 

현재 상태로는 움직여도 실제 확인할 수 없기 때문에 외부에 장애물들을 설치해줍니다.

 

기존에 만든 쓰레기 통 shader를 활용해서 블랙홀도 배치해줍니다.

 

새로운 스크립트를 생성합니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.Content.Interaction;

public class SpaceOutSidecontroller : MonoBehaviour
{
    public XRLever lever;
    public XRKnob knob;

    public float forwardSpeed;
    public float sideSpeed;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        float forwardVelocity = forwardSpeed * (lever.value ? 1 : 0);
        // Mathf.Lerp(-1, 1, knob.value) knob.value : 0 ~ 1 이지만 -1 ~ 1로 값 주도록 바꿈
        float sideVelocity = sideSpeed * (lever.value ? 1: 0) * Mathf.Lerp(-1, 1, knob.value);

        Vector3 velocity = new Vector3(sideVelocity, 0, forwardVelocity);
        transform.position += velocity * Time.deltaTime;
    }
}

 

오브젝트를 만들어서 외부 객체를 다 집어넣고 위의 스크립트를 달아줍니다.

그리고 상호작용한 lever 와 핸들을 연결해줍니다. 

 

테스트 결과, 핸들을 이용해서 방향을 레버를 이용해서 이동을 진행해 마치 우주에서 탐사하는 것처럼 느낄 수 있게 되었습니다. 

반응형

댓글