본문 바로가기
반응형

Unity64

[Unity] TrailRenderer로 역동적인 효과 만들기 물체의 이동 경로를 따라 잔상을 남길 수 있는 TrailRenderer 컴포넌트에 대해 알아보자. 미사일의 잔상, 검의 휘두름 효과, 혹은 캐릭터가 빠르게 달릴 때 생기는 효과 등을 구현할 때 유용하다. 1. TrailRenderer란?오브젝트가 이동한 경로를 따라 동적으로 메쉬(Mesh)를 생성하는 컴포넌트이다.단순히 선을 긋는 것이 아니라, 시간에 따라 서서히 사라지게 하거나너비를 조절하는 등 다양한 시각적 연출이 가능하다.2. 프로퍼티 살펴보기프로퍼티설명Width궤적의 굵기를 시간에 따라 결정. 가로축은 궤적의 시작(0.0)부터 끝(1.0)까지, 세로축은 너비.Time궤적이 화면에 유지되는 시간(초). 생성된 지 해당 시간만큼 지나면 사라짐.Min Vertex Distance새로운 정점을 생성할 최.. 2026. 3. 10.
[Unity] 오브젝트가 꺼져도 멈추지 않는 코루틴 (CoroutineManager) 유니티에서는 코루틴(Coroutine)을 실행한 GameObject가 비활성화되면 코루틴도 함께 멈춰버리는 문제가 있다.오브젝트의 활성 상태와 상관없이 끝까지 실행되어야 하는 로직에서는, 이 방식이 꽤나 걸림돌이 된다. 따라서, 어디서든 접근 가능하고, 오브젝트 상태에 영향을 받지 않는 스크립트를 작성해보았다.using UnityEngine;using System.Collections;public class CoroutineManager : MonoBehaviour{ // Instance private static CoroutineManager _instance; public static CoroutineManager Instance { get { .. 2026. 3. 2.
[Unity] 정교한 UI 클릭을 위한 커스텀 Image 구현 유니티의 UI는 Rect 모양에 맞게 직사각형 형태의 클릭 영역만을 지원한다. 이 때문에 외곽에 투명한 영역이 많은 이미지를 사용할 때, 의도치 않게 빈 공간이 클릭되는 불편함이 발생한다. 하지만 Image의 alphaHitTestMinimumThreshold 속성을 조절하면 알파 값을 기준으로 특정 수치 이하의 투명 영역은 클릭을 무시하도록 설정할 수 있다. 매번 스크립트로 제어하는 번거로움을 줄이기 위해서 Inspector에서 조절할 수 있는 커스텀 클래스를 구현해보았다.구현 스크립트using UnityEngine;using UnityEngine.UI;#if UNITY_EDITORusing UnityEditor;using UnityEditor.UI;#endif[AddComponentMenu("UI/A.. 2026. 2. 28.
[Unity] 프레임 깎아먹는 if문 대체하기: 쉐이더 그래프 Keyword 노드 사용법 쉐이더 그래프를 활용하다 보면, 특정 조건에 따라결과값을 다르게 출력해야 하는 상황에 직면하게 된다.이때, 가장 직관적으로 선택하게 되는 방식이Branch 노드나 If문을 활용한 동적분기(Dynamic Branching) 처리다.위와 같은 방식이 동적분기 처리의 예시이다.Boolean이라는 프로퍼티의 값에 따라 초록색 또는 빨간색을 출력한다. 하지만 쉐이더 내에서의 조건문 사용은일반적인 CPU 연산과 달리 성능 측면에서 상당한 리스크를 동반한다.GPU는 수많은 데이터를 병렬로 처리하는 구조를 가지는데,픽셀 단위로 실시간 조건 검사를 수행하게 되면 GPU의 병렬 처리 효율이 급격히 저하되기 때문이다. 따라서 런타임 중에 실시간으로 변할 필요가 없는 설정값이라면,정적분기(Static Branching)를 활.. 2026. 2. 22.
[Unity] 쉐이더 그래프 경로 변경하기 쉐이더 그래프(Shader Graph)를 생성해서, 머티리얼(Material)에 적용할 때쯤 보면,항상 경로가 "Shader Graphs/(파일 이름)"인 것을 확인할 수 있다.코드로 작성할 때는 경로를 직접 입력할 수 있었지만,쉐이더 그래프는 코드 방식도 아니다보니 경로를 강제로 설정해버린다.이렇게 되면, 쉐이더 그래프가 많아질수록 분류면에서 불편해진다. 그렇다면 경로를 변경할 수 있는 방법은 없을까?물론 있다.일단 쉐이더 그래프를 만들어서 이걸 메모장으로 열어보자."m_Path"를 검색하면 현재 경로를 찾을 수 있다.이 부분을 원하는 대로 바꿔보자. 그러면 아래와 같이 경로가 변경된 것을 볼 수 있다.쉐이더 그래프 노드를 변경 및 저장한다고 해서,다시 초기화되지 않으니 걱정하지 않아도 된다. 2026. 2. 21.
[Unity] MeshLOD로 간편하게 LOD 적용하기 LOD를 간편하게! MeshLOD🔎집중 탐구카메라에서 멀리 떨어져 있는 물체는, 굳이 정교하게 그릴 필요가 없기 때문에 LOD(Level of Detail) 기법을 적용하곤 한다.이 기법을 통해, 렌더링 성능을 향상 시킬 수 있다.유니티에서는 LODGroup 컴포넌트를 게임 오브젝트에 부착하여,화면에서 오브젝트가 차지하는 비율을 기준으로오브젝트의 렌더링 품질을 결정한다.다만, 디테일을 깎아낸 하위 모델들을 수동으로 제작해야 하고,여러 모델들을 메모리에 올려두어야 한다. MeshLOD는 이러한 번거로운 과정을 탈피하고,메모리 문제 또한 개선한 방식이다.자세히 알아보도록 하자.① MeshLOD 적용하기Model Import Settings에서 Generate Mesh LODs를체크해주면 자동 적용이 된다... 2026. 2. 21.
[Unity] 수포자를 위한 게임 수학 : 좌표 변환과 버텍스 변환 (2) 알쓸유잡 8월 : 📐수포자를 위한 게임수학 4부뷰 행렬 (View Matrix)원근 투영행렬 (Perspective Projection Matrix)FOV(Field of View) / Near / Far과 같은 개념이 포함된다.① 카메라를 원점으로 하여 Near와 Far, 4개의 지점(t, b, l, r)을 정의한 것이다.② t와 b, l과 r은 절대값이 동일하므로 항상 0이다.③④ 2026. 2. 10.
[Unity] 수포자를 위한 게임 수학 : 좌표 변환과 버텍스 변환 (1) 알쓸유잡 8월 : 📐수포자를 위한 게임수학 4부로컬 → 월드 → 뷰 → 프로젝션 → NDC → 디스플레이(모니터 등)의 변환 과정을월드-뷰-프로젝션 트랜스폼(World-View-Projection) 또는 모델-뷰-프로젝션 트랜스폼(Model-View-Projection)이라고 한다.Local Space (Model Space)원점으로부터의 상대 좌표를 기반으로 메쉬의 형태가 구성된다.World SpaceTransform.localToWorldMatrix 프로퍼티는로컬 공간의 좌표를 월드 공간의 좌표로 변환해주는 행렬이다.View SpaceCamera.worldToCameraMatrix 프로퍼티는월드 공간에 있는 좌표를 카메라 공간으로 변환해주는 행렬이다Z축은 카메라의 뒤쪽 방향이므로 정면은 (-) 부호.. 2026. 2. 4.
[Unity] 수포자를 위한 게임 수학 : 트랜스폼과 행렬 알쓸유잡 8월 : 📐수포자를 위한 게임수학 4부3D 이동 + 스케일 + 회전 (동차좌표)유니티에서는 4x4 행렬을 활용해 위치, 회전, 스케일을 한번에 처리한다.역행렬 (Inverse Matrix)행렬이 어떤 변환을 하면, 역행렬은 그 변환을 정확히 거꾸로 되돌린다.Transform의 행렬 Transform.localToWoldMatrix오브젝트의 월드 트랜스폼Transform.transpose전치 행렬Transform.inverse역행렬회전과 이동을 함께 반영하기 위해 두 역행렬을 곱한다. 2026. 1. 1.
[Unity] 수포자를 위한 게임 수학 : 노멀맵(Normal Map) 알쓸유잡 5월 : 📐수포자를 위한 게임수학 3부노멀맵(Normal Map)은 디테일한 굴곡을 표현하기 위한 맵을 의미한다.픽셀 단위로 조명 연산의 디테일을 추가해준다.노멀 매핑 (Normal Mapping)노멀맵을 실제 오브젝트에 적용하는 것을 노멀 매핑이라고 한다.버텍스가 아닌 사이의 표면은 보간 처리하여 노멀을 구한다.노멀맵이 파랗게 보이는 이유노멀(X, Y, Z)의 각 축은 -1 ~ 1 사이의 값을 가지나,컬러(R, G, B)의 범위는 0 ~ 1이므로 범위를 재조정하여 저장한다.[+] -1 → 0, 0 → 0.5, 1 → 1이때, X축과 Y축은 -1 ~ 1의 범위를 가지나, Z축은 0 ~ 1 값을 가진다.[+] 면의 방향을 의미하므로 음수 값(-1)을 가질 수 없다.따라서, Z축(=B) 값이 항상.. 2025. 12. 22.
반응형