개발/Unity
-
Unity Oculus VR 물건 던지는 속도(세기) 조절하기개발/Unity 2020. 2. 13. 15:18
Oculus Intergration의 OVRGrabber 클래스는 기본적으로 OVRGrabbable 속성의 물건을 던질 수 있는데 OVRGrabber 클래스의 GrabEnd() 함수에서 잡고 있던 오브젝트를 놓을 때 마다 오브젝트의 속도를 다시 계산하기 때문이다. 하지만 오브젝트의 속도는 컨트롤러의 이동 속도를 그대로 받아오므로 오브젝트를 빠르게, 멀리 날아가게 하는 데 한계가 있다. 컨트롤러의 버튼을 사용할 수도 있지만 그러면 던지기가 아니라 발사에 가까워진다. Unity Oculus 컨트롤러로 OVRGrabbable 오브젝트 발사하기 using UnityEngine; public class ThrowGrabbed : MonoBehaviour { [SerializeField] private Vector..
-
Unity Oculus 카메라(시점) 움직이기개발/Unity 2020. 2. 13. 14:51
VR 개발에서 카메라는 항상 헤드셋의 위치에 따라 움직이므로 위치를 조절하기 어렵고, 가능하더라도 멀미의 원인이 되므로 피하는 것이 좋다. 따라서 몰입을 위해 Camera 컴포넌트가 장착된 CenterEyeAnchor의 Transform이나 Field of View(시야각)은 변경할 수 없게 되어 있다. 따라서 충격으로 흔들리거나, 술에 취한 상태를 표현하거나 예술적인 효과를 내기 위해 카메라를 움직이고 싶을 때는 상위 오브젝트인 OVRCameraRig 또는 OVRPlayerController를 움직여야 한다. 플레이어의 위치를 이동할 때는 OVRPlayerController을 움직일 수 있는데, 이 때는 ChacterController과 OVRPlayerController를 비활성화하는 것이 좋다. O..
-
Unity Oculus 컨트롤러로 OVRGrabbable 오브젝트 발사하기개발/Unity 2020. 2. 6. 14:15
using UnityEngine; public class ThrowGrabbed : MonoBehaviour { [SerializeField] private Vector3 angularVelocity = new Vector3(0, 5, 0); private OVRInput.Button throwButton; private OVRGrabbable ovrGrabbable; private Rigidbody rb; void Awake() { ovrGrabbable = GetComponent(); if (!ovrGrabbable) Debug.LogError("No ovrgrabbable at " + gameObject.name); rb = GetComponent(); if (!rb) Debug.LogError("..
-
Unity Oculus Quest 최적화개발/Unity 2020. 2. 5. 16:56
Testing and Performance Analysis Testing and Performance Analysis In this guide, we’ll review baseline targets, recommendations, tools, resources, and common workflows for performance analysis and bug squashing for Unity VR applications. General Tips VR application profiling provides insi developer.oculus.com 오큘러스 퀘스트는 PC와 연결 없이 작동하므로 모바일기기 수준의 사양을 갖고 있다. 하지만 자연스러운 VR을 구현하기 위해서는 일반적인 모바일 기기보다 높은..
-
Unity 충돌 감지 시 효과음 재생개발/Unity 2020. 1. 31. 13:45
using UnityEngine; public class CollisionSound : MonoBehaviour { // 효과음을 재생할 최소 충돌 속도 [SerializeField] private const float threshold = 1f; private AudioSource audioSource; void Awake() { audioSource = GetComponent(); // 효과음은 Scene 시작에 재생되거나 Loop되지 않는다 if (audioSource) { audioSource.playOnAwake = false; audioSource.loop = false; } } private void OnCollisionEnter(Collision collision) { if (collisi..
-
Unity 라이트 프로브와 실시간 조명개발/Unity 2020. 1. 31. 12:08
https://you-rang.tistory.com/140 [Unity]20.라이트 프로브를 이용한 조명효과 사용법 안녕하세요 유랑입니다. 이번 시간에는 동적인 객체의 조명 효과 적용을 위해서 라이트 프로브에 대해서 배워보겠습니다. 기존에 배운 라이트 매핑은 움직이지 않는 객체들을 위해서 였다면 이 부분은 반대입니다... you-rang.tistory.com 이 글을 보고 라이트 프로브를 적용하는 과정에 대해 정리. 과정에 대한 더 자세한 설명은 해당 블로그 글을 참고. 라이트 프로브의 원리와 장점, 최신 버전에서의 변경 사항에 대해서는 아래의 공식 블로그 글을 참고. 라이트 프로브와 정적 조명 - Unity Technologies Blog 2019. 2버전에서는 Lightmap Static 플래그를 C..
-
Unity SerializedObject target has been destroyed 오류 해결개발/Unity 2020. 1. 23. 11:32
Serializedobject target has been destroyed. UnityEngine.GUIUtility:ProcessEvent(Int32,IntPtr) 오류 메시지가 발생할 때가 있는데 일단 에디터의 버그로 보인다. Unity를 재시작하면 일시적으로 사라지지만 Windows > Rendering > Lightning Settings > Scene > Lightmapping Settings에서 Auto generate 체크박스를 해제 후 재설정해 Scene의 조명들을 다시 생성해 문제를 해결할 수 있었다. 이전 버전으로 돌리거나, Library 폴더를 통채로 다시 import 해도 문제를 해결할 수 있다. 참고: SerializedObject target has been destroyed...
-
Unity Oculus 컨트롤러 진동개발/Unity 2020. 1. 21. 16:49
https://developer.oculus.com/documentation/unity/unity-haptics/ static void OVRInput.SetControllerVibration ( float frequency, float amplitude, Controller controllerMask ) OVR Haptic 대신 OVR.Input 의 SetControllerVibration 함수를 사용해 컨트롤러 진동을 설정할 수 있다. frequency와 amplitude는 각각 진동의 주파수와 진폭으로 0 - 1 사이의 float 타입 실수이고, controllerMask는 진동을 설정할 컨트롤러. 이 함수는 진동의 지속 시간을 설정할 수 없고, 2초가 지나면 진동은 자동으로 멈춘다. Corouti..