본문 바로가기
Unity

2024/06/20 Unity VR 기초

by 민정e 2024. 6. 20.

Unity VR 템플릿 매뉴얼

https://docs.unity3d.com/Packages/com.unity.template.vr@9.0/manual/index.html

 

VR Template Quick Start Guide | VR | 9.0.0

VR Template Quick Start Guide Unity’s VR Project Template provides a starting point for virtual reality development in Unity. The template configures project settings, pre-installs the right packages, and includes various pre-configured Example Assets to

docs.unity3d.com

 

 

VR오브젝트가 잡았을 때 손의 맞는 위치에 가도록 설정하기

실린더를 활용하여 총을 만들어준다. 푸른 화살표 방향(z축)이 총구가 되도록 만들어준다.

 

gun 게임오브젝트 안에 Empty를 만들어 grab offset을 만들어주고 손잡이 각각에 배치해준다.

 

좌 grab offset1, 우 grab offset2

 

gun object에 box collider를 넣어준 후, 사이즈조절한다. 그 다음, Rigid Body와 XR Grab Interactable을 넣어준다.

XR Grab Interactable항목의 Select Mode와 Focus Mode를 모두 Multiple로 해주고, Attach Transform과 Secondary Attach Transform에 각각 grab offset1과 2를 넣어준다.

총알 나가게 만들기

Fire스크립트를 만들고 다음과 같이 작성해준다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Fire : MonoBehaviour
{
    public GameObject bulletPrefab;
    public Transform spawnPoint;

    public void Shoot()
    {
        Instantiate(bulletPrefab, spawnPoint.position, spawnPoint.rotation);
    }
 
}

sphere를 사용하여 원하는 크기의 총알을 만들어주고 prefab으로 만들어준다. 그후, GrabOffset을 복제하여 총구에 위치시켜주고, 이름을 Spawn Point로 지정해준다.

※주의사항! Spawn Point를 총구보다 멀리에 위치해주어야, 뒤에 총알이 터지면서 사라지는 효과를 넣을때 정상적으로 작동한다. 너무 가까우면 총알이 날아가기도전에 터져버리니 꼭!! 총구보다 멀리 위치시켜준다.

gun에 스크립트를 넣어주고 다음과같이 설정해준다. 그 다음, XR Interactable의 Interactable Events > Activate에 +를 눌러서 항목을 추가해준 후, GameObject에 Gun을 넣어주고, Function항목에 Fire의 Shoot()함수를 적용시켜준다.

 

그리고 인게임에서 플레이를 해보면 총알이 생성은 되는데 날아가지는 않는것을 확인할 수 있다.

 

총알 날아가게 만들기

Bullet 스크립트를 생성한 후, 다음과 같이 작성을 해주고 Bullet에 컴포넌트로 넣어준다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bullet : MonoBehaviour
{
    public GameObject SpawnedObject;
    private GameObject Boom;
    // Start is called before the first frame update
    void Start()
    {
        GetComponent<Rigidbody>().AddForce(this.gameObject.transform.forward * 2000); // 총알이 앞으로 나아가게 설정
    }

    // Update is called once per frame
    private void OnCollisionEnter(Collision collision)
    {
        Destroy(this.gameObject); //  닿았을 때 총알 제거
        Boom =  Instantiate(SpawnedObject, transform.position, transform.rotation); // 총알이 터지는 boom 이펙트 생성
        boomDestroy();// 10초 후 boom 이펙트 제거
    }

    void boomDestroy()
    {
        Destroy(Boom, 10f);
    }

 

그 다음 ParticleSystem으로 Boom이펙트를 만들고 프리팹으로 만들어 준 후, SpawnedObject에 넣어준다.

※ 주의 사항!! Spawned Object에 절대 Bullet을 넣으면 안된다. Bullet이 무한 생성되면서 유니티가 작동이 멈춰버리니 꼭 주의해야한다.

Boom이펙트는 다음과 같이 설정해서 만들어주었다.

 

 

 

그러면 총알이 날아가고 터지면서 사라지는 연출이 가능하다.

'Unity' 카테고리의 다른 글

2024/06/24 Unity 코딩 응용(아이템 들었다 놓기, 터뜨리기)  (0) 2024.06.24
2024/06/21 Unity VR기초 2  (0) 2024.06.21
2024/06/11 Unity VFX  (0) 2024.06.11
Unity 물 shader  (0) 2024.05.17
2024/05/16 Unity ProBuilder & Toon Shader  (0) 2024.05.16