728x90

유니티엔진 129

[Unity] 시네머신을 활용해 쉽고 간편하게 카메라 이동 영역 제한

유니티 엔진에서, 카메라가 캐릭터를 따라다니지만, 특정 영역까지만 따라가길 원하는 경우, 시네머신(Cinemachine) 기능으로 간단하게 구현 가능. 0. Cinemachine 은 Package Manager 에서 Package 를 추가 해줘야 사용할 수 있음. 1. CinemachineVirtualCamera 컴포넌트 하단의 Extensions / Add Extension 찾기. 2. Add Extension 에서 CinemachineConfiner/ Confiner2D 를 추가. 3. Confiner 인 경우 Collider, Confiner2D 인 경우 2D polygon 이나 composite collider 로 영역을 지정해서 설정. Confiner 의 뜻 "한정[제한]하는 사람[것]." 특정..

[Unity] 유니티 엔진으로 툴 제작 시 에디터 클릭 이벤트 후킹하기

Unity Engine 에디터 내에 Scene View 를 활용해서 툴을 만들 때, 마우스 좌클릭을 기본 도구에서의 선택 도구 외에 다른 용도로 사용하려고 하면 Unity Engine 의 Event 를 핸들링 할 필요가 있다. Event.current 가 에디터의 UnityGUI 이벤트가 되는데, 이 이벤트가 마우스 좌클릭일 때 Use() 를 호출해서 사용처리 해버리면 선택 도구로 작동하는 것을 후킹할 수 있다. if (Event.current.type != EventType.MouseDown) return; if (Event.current.button != 0) return; Event.current.Use(); // 툴에서 원하는 동작 처리. Event.current.button 의 값은 마우스 버튼..

[Unity] Texture2D와 RenderTexture의 핵심 차이

Texture2D와 RenderTexture의 핵심적인 차이는 다음과 같다: 사용 목적 Texture2D: 2D 이미지 데이터를 저장하고 사용하는 데 사용된다. 주로 텍스처 매핑, UI 요소, 그림 및 사진과 같은 이미지 표현에 사용된다. RenderTexture: 렌더링 결과를 저장하기 위한 특수한 유형의 텍스처이다. 주로 카메라의 렌더링 결과를 저장하거나, 이미지 처리, 후처리 효과, 텍스처 생성 및 수정에 사용된다. 렌더링 가능 여부 Texture2D: 렌더링 가능한 텍스처가 아니며, 즉 렌더링 파이프라인에 직접 사용할 수 없다. RenderTexture: 렌더링 결과를 저장하기 위한 텍스처로서, 렌더링 파이프라인에 직접 사용할 수 있다. 메모리 할당 방식 Texture2D: CPU 메모리에서 생성..

[Unity] 최초 실행되는 UnityMain 함수 만들기 (RuntimeInitializeOnLoadMethod 상세 순서 설명)

유니티 엔진에서 초기화를 하고싶어 유니티는 BuildSettings의 Scenes In Build 목록에 셋팅된 0번 인덱스 씬으로 시작하게 됨. 이 때 씬을 로드하면서 초기화도 같이 수행하게 되는데, 씬에 올라간, 씬의 Hierarchy 목록의 GameObject 들의 Awake와 Start의 호출 순서가 보장되지 않음. Awake, Start 호출 순서가 보장되지 않더라도 초기화 처리는 가능하겠지만, 어떤 GameObject 들의 초기화보다도 먼저 초기화 처리를 하고싶은 경우가 있을 수 있음. 이 때, [RuntimeInitializeOnLoadMethod] 어트리뷰트(Attribute)를 활용해서 특정 static 함수의 속성을 설정해서, 게임이나 앱 실행 후 가능한 빠른 시점에 호출되도록 핸들링 ..

[Unity] 유니티 셰이더 코드에서 _MainTex_TexelSize 변수의 정체는?

셰이더 코드는 참조하다보니 _MainTex_TexelSize; 라는 변수를 선언만 하고 바로 사용하는 모습들을 종종 보게 됨. 내장 변수인 것 같은데, 어떤 값을 담는지 설명은 검색해도 보이던데 어디서 어떻게 생성해서 값을 할당 해주는 것인지에 대한 내용이 잘 보이지 않더라. 일단 이 변수는 유니티 엔진 내부에서 생성 및 할당해주는 변수는 확실하고, 관련 설명은 아래 유니티 공식 문서에서 서술하고 있음. 주의해야 할 부분은, _MainTex_TexelSize 라는 이름의 변수명을 생성해주는 것이 아니고, {TextrueName}_TexelSize 라는 이름으로 생성해준다는 것. 셰이더를 작성할 때 보통 _MainTex 프로퍼티를 생성하기 때문에 결론적으로 _MainTex_TexelSize 라는 변수가 만..

[Unity] 셰이더 처리 후 텍스처 테두리가 번져 보이는 문제

간단한 가우시안 블러(Gaussian Blur) 코드를 올리고 보니 테두리의 색상이 번져있는 것을 제보를 받고 알게 됨. 원인은, 가우시안 블러 셰이더 처리 중, UV 값이 0보다 작거나 1보다 큰 영역까지 침범했기 때문. [Unity] 간단한 가우시안 블러(GaussianBlur) 셰이더 코드 텍스처에 가우시안 블러 처리를 하면 요런 결과물이 생성됨. 아래는 머티리얼 속성. Blur Radius 를 조절해서 Blur 강도를 조절할 수 있다. 간단한 가우시안 블러 셰이더 코드 Shader "Custom/GaussianBlur" { tistory.wonsorang.com 아래는 침범된 코드 스니펫. // Horizontal blur pass for (int x = -5; x

[Unity] Dithering 셰이더 함수, Dither 노드, Dither thresholds array

Dither는 양자화 오류를 무작위화하는 데 사용되는 의도적 형태의 노이즈. 이미지에서 컬러 밴딩과 같은 대규모 패턴을 방지하기 위해 사용되거나, 화면 공간에 디더링을 적용하여 패턴의 균일한 분포를 보장하기 때문에 불투명한 오브젝트의 특정 픽셀을 Cliping 하여 투명하게 보이도록 처리할 수 있음. 불투명 렌더링 패스에서 투명하게 보이도록 처리하는데 유용. 아래 함수의 ScreenPisition 은 디더 패턴을 적용하는 데 사용할 스크린 좌표. void Unity_Dither_float4(float4 In, float4 ScreenPosition, out float4 Out) { float2 uv = ScreenPosition.xy * _ScreenParams.xy; float DITHER_THRESH..

[Unity] 밸브사의 포탈(Portal) 게임의 포탈 메카닉스 만드는 방법 (자료)

플레이어 카메라와 포탈의 카메라를 생성하고 조작해서 포탈에 해당하는 매쉬 렌더러의 머티리얼 텍스쳐를 교체하는 기법. 튜튜리얼 영상 https://www.youtube.com/watch?v=cWpFZbjtSQg GitHub 저장소 링크 https://github.com/SebLague/Portals/tree/master GitHub - SebLague/Portals: Portals in Unity Portals in Unity. Contribute to SebLague/Portals development by creating an account on GitHub. github.com 게임 개발에 필수적인 내용을 담는 명서들을 소개합니다. (유니티 최신 버전) https://link.coupang.com/a..

[Unity] Working with Cinemachine Cameras Overview (시네머신 카메라 작업 개요)

시네머신(Cinemachine) 개요 시네머신(Cinemachine)은 코드를 작성하지 않고 복잡한 행동을 만들 수 있는 방법을 제공하는 카메라 시스템. 이전에는 카메라 움직임을 직접 키프레임화하거나 코드를 통해 스크립트로 작성하여 특정 팔로우 움직임을 만들어야 했음. 시네머신(Cinemachine)은 Cinemachine Brain 과 Virtual Camera(vcam) 으로 구성되고 메인 카메라에 적용하는 방식. 메인 카메라에 있는 모든 것이 시네머신과 함께 작동하며, 메인 카메라를 구동하는 강력한 애니메이션 시스템이라고 생각하면 됨. Cinemachine plugin는 설치하기 쉽고 설치부터 애니메이션까지 카메라를 제어할 수 있는 사용하기 쉽고 유연한 시스템을 제공. 기존 카메라 시스템을 변형하거..

[Unity] FOW(Fog of War) 전장의 안개

전장의 안개, Fog of War(FOW) 구현 방식에 대한 자료 스크랩 아래는 실제 구현된 유니티 에셋 링크. AOS Fog of War 에셋(무료) 스토어 페이지 (Free asset Asset Store page) https://prf.hn/click/camref:1011lvz7h/pubref:fogofwar/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Ffullscreen-camera-effects%2Faos-fog-of-war-249249 AOS Fog of War | 카메라 효과 | Unity Asset Store Add depth to your project with AOS Fog of War asset..

728x90
반응형