본문 바로가기

Unity 공부시작

[ Unity ] Unity 2019 Post Process 1. Package Manager 에서 Post Processing 다운로드 2. Post Process Layer, Post Process Volume 컴포넌트 추가 3. Post Process Layer 컴포넌트의 Layer 설정 4. Scene 전체에 적용하고 싶다면 Post Process Volume의 Is Global 체크 5. Post Process Volume 컴포넌트의 Add effect...를 눌러 원하는 효과 추가하기 [ 유니티 문서 - 포스트 프로세싱에 대한 이해 ] https://docs.unity3d.com/Manual/BestPracticeMakingBelievableVisuals8.html Unity - Manual: Understanding post-processing Ind..
[ Unity ] Game View의 Stats frameTime UnityEditor.UnityStats 로 접근할 수 있다. 그 중 frameTime 변수가 있는데, 이를 Update() 함수에서 사용 시 계속 0 값을 리턴하는 문제가 있었다. OnGUI() 에서 값을 사용하자 제대로 된 값을 얻을 수 있었다.
[ Unity3D 잔상 효과 ] SkinnedMeshRenderer AfterImage Effect 잔상을 남기려는 오브젝트의 Renderer가 SkinnedMeshRenderer인 경우에 가능한 방법입니다. 단계는 아래와 같습니다. 1. SkinnedMeshRenderer.BakeMesh( Mesh mesh ) 를 이용하여 오브젝트의 현재 상태를 저장한다. 2. 저장한 Mesh를 잔상으로 이용한다. // 잔상 오브젝트에 필요한 것들 SkinnedMeshRenderer smr = gameObject.Getcomponent(); Material afterImageMaterial; // 잔상 생성 Mesh mesh = new Mesh(); smr.BakeMesh( mesh ); GameObject afterImageObj = new GameObject("AfterImage"); MeshFilter mf =..
[Unity3D] Image의 Color를 변경해도 적용이 안되는 경우 구글에서 물음표 Png 파일을 다운받아 Sprite ( 2D and UI ) 설정을 해준 뒤 Image 컴포넌트에 넣어 컬러를 변경하였다. 그러나 오브젝트의 색이 변하지 않는 문제가 발생했다. 그 이유는 단순하다. 물음표의 색상이 검은색이었기 때문이다. 그림판3D를 이용하여 물음표를 흰색으로 바꾸어주니 색을 원하는 대로 조절할 수 있게 되었다.
[Unity3D] World Space 상의 UI를 화면의 가장 위에 그리기 World Space 상의 UI들은 Z축의 영향으로 다른 월드 스페이스 상의 오브젝트들에 의해 가려지게 된다. UI 전용 카메라를 하나를 만들어 UI가 가장 위에 출력될 수 있도록 하였다. UI 카메라를 추가한 뒤 Main 카메라, UI 카메라의 설정은 아래와 같이 바꾸어 주었다. Main Camera 1. Culling Mask에 UI를 체크 해제 UI Camera 1. Culling Mask에 UI를 제외한 나머지 모두 해제 2. Clear Flags를 Depth only로 변경 3. Depth 수치를 Main Camera보다 크게 설정 * UI 오브젝트들의 Layer를 지정해주어야 한다. 위의 설정은 UI 오브젝트들의 Layer를 'UI'로 지정했을 경우이다. 만약 'UI'가 아닌 다른 Layer를..
[Unity3D] NavMeshAgent 미끄러짐 or 순간이동 현상 현재 개발 중인 게임의 적 유닛은 플레이어를 발견했을 시 공격이 가능한 거리가 될 때까지 플레이어에게 접근한 뒤 공격을 시작한다. 적 유닛은 NavMeshAgent를 이용하여 이동하는데, 멈출 때는 NavMeshAgent.isStopped를 true로 바꿔주었다. 그러자 적 유닛이 멈춘 뒤 다시 이동할 때 순간이동을 하는 현상이 발생했다. 그 이유는 NavMeshAgent에 Velocity가 존재하기 때문이다. isStopped를 했을 때 씬에서 캐릭터의 위치는 그 자리에서 멈추지만, 실제 NavMeshAgent에서의 위치는 Velocity가 zero가 될때까지 미끄러져간다. isStopped를 true로 바꿔주면서 NavMeshAgent.velocity를 Vector3.zero로 초기화해주자 원하는 결..
Unity3D NavMeshAgent의 SetDestination, ResetPath 스스로 움직이게 하려는 AI 오브젝트들에게 NavMeshAgent 컴포넌트를 추가하게 되면, AI 오브젝트들에 적용되어 있는 Rigidbody가 잠가진다. 만약 NavMeshAgent를 사용하지 않고 Rigidbody의 AddForce나, MoveRotation, MovePosition 등을 사용하여 AI 오브젝트를 움직이고 있었다면, NavMeshAgent를 사용한 후에는 위의 함수들이 반영되지 않으므로 AI 오브젝트가 움직이지 않게 된다. NavMeshAgent의 SetDestination을 이용하여 오브젝트가 움직이게 할 수 있다. NavMeshAgent.SetDestination( Vector3 destination ) 를 통해 목적지로 향하게 만들 수 있다. destination에 플레이어의 위..
Unity3D 거리에 따른 음향의 차이가 나지 않을 때 AudioSource 컴포넌트의 3D Sound Setting에서 음향 거리, 곡선 등을 조정했는데도, 거리가 멀어져도 소리가 바로 앞에서 들리는 경우가 있다. Inspector 창의 맨 오른쪽 자물쇠 옆에 있는 메뉴바를 누르고 Debug를 눌러주면 AudioSource 컴포넌트에 나와있는 속성들이 바뀌어져 있는 것을 볼 수 있다. 거기서 Pan Level Custom Curve이 0에 위치해 있다면 이를 1로 바꾸어 보자. Pan Level Custom Curve는 1에 가까워질 수록 3D 음향에 가까워지고, 반대로 수치가 낮아질 수록 2D 음향에 가까워지는 속성이다. cf ) 만약 AudioSource를 스크립트 상에서 추가를 할 경우, 아래와 같이 Pan Level Custom Curve 값을 바꾸..