Summary 직선을 그릴 때 직선 위의 점들은 실수 값을 가질 수밖에 없다. 그래서 불연속 정수 값만을 갖는 픽셀에 직선을 그릴 때는 실수 값의 소수점을 버리거나 반올림하여 정수로 변환해야 하는데, 브레즌햄 알고리즘은 실수 연산 없이 정수 연산만으로 직선을 그릴 수 있게 해준다. Details 2가지 경우로 나눈다. 기울...
유니티 - Debug.Log()에 색상 넣기
Memo <color=></color> 태그를 사용하여 로그 메시지에 색상을 넣을 수 있다. color= 뒤에는 색상 이름 또는 HTML 색상코드를 입력한다. Debug.Log("Default"); Debug.Log("<color=white>White</color>"); De...
Drag and Drop Recorder
Summary 드래그 앤 드롭으로 게임오브젝트를 커서를 따라 이동시킨다. 이동 경로를 기록하고, 반복재생할 수 있다. How To Use 빈 게임오브젝트에 DDRecorder 컴포넌트를 추가한다. 드래그 앤 드롭으로 이동시킬 게임오브젝트에 콜라이더와 DDTarget 컴포넌트를 추가한다. DDRecorder 컴포넌트의 R...
유니티 - RPG Inventory System(RPG 게임 인벤토리 만들기)
개요 RPG 게임에서 사용할 수 있는 기본적인 인벤토리를 구현한다. 구현할 기능 아이템 추가(습득) 아이템 제거(버리기) 아이템 사용 아이템 이동 슬롯 하이라이트 아이템 툴팁 아이템 버리기 팝업 아이템 개수 나누기 팝업 인벤토리 빈칸 채우기 인벤토리 정렬 아이템 필터링 클래스 구성 ...
Quick Sort(빠른 정렬)
Summary 시간복잡도 평균 \(O(n log n)\), 최악 \(O(n^2)\) 공간복잡도 \(O(n)\) 정렬 특징 불안정 정렬 특징 분할 정복 재귀 Details 메소드 구성 QuickS...
O(logn) 거듭제곱 알고리즘
Summary 일반적으로 \(O(n)\) 시간복잡도로 수행하는 거듭제곱 계산을 \(O(log_{2}n)\) 의 시간복잡도로 수행할 수 있는 알고리즘 2진수 연산을 이용한다. Details (a^n)을 계산하는 가장 쉬운 방법은 (a)를 (n) 번 곱하는 것이다. 예를 들어 (4^9)을 구하려면 (4...
유니티 - 멀티스레딩과 Job의 활용
유니티에서의 멀티스레딩 유니티엔진에서는 기본적으로 모든 CPU 연산이 메인 스레드에서 이루어진다. 그렇다고 다중 스레드를 사용할 수 없다는 것은 아니지만 메인 스레드가 아닌 다른 스레드에서 유니티의 메인 로직에 접근할 수 없도록 막혀있다. 다시 말해, 다른 스레드에서는 게임오브젝트, 컴포넌트 등에 접근하면 에러가 발생한다. 예를 들어 ...
파티클 시스템 예제 - 11 - Sword Effect
목차 목표 준비물 1. 하이라키 구성 2. Glow 이펙트 3. Sparkle 이펙트 4. Aura 이펙트 5. 결과 Preview 목표 검 모델링에 부착하여 사용할 수 있는 이펙트(무기 강화 이펙트) 만들기 준비물 검 모델링 https://assetstore...
Static Readonly vs. Const
공통점 런타임에 값을 변경할 수 없다. 차이점 Static Readonly 필드 선언문 또는 정적 생성자에서만 값을 초기화할 수 있다. 값을 초기화하지 않으면 해당 타입의 기본값으로 초기화된다. 런타임 초기에 값이 고정된다. 값이 정해지면 변하지 않지만, 결국 변...
유니티 - Voxel System(마인크래프트 구현하기) [TODO]
목차 목표 1. 복셀 기본 2. 청크와 맵 데이터 3. 텍스쳐 입히기 4. 월드에서 청크 생성 및 관리하기 5. 지형 만들기 6. 캐릭터 컨트롤러 만들기 목표 유튜브 강좌를 따라가며 구현한다. 유니티엔진에서 마인크래프트와 같은 복셀 시스템을 구현한다. 모든 맵과 사물은 큐브 형태를 띠고 있으며...