수선의 발 구하기 공간 상의 세 점 A, B, C가 주어져 있다. D는 C에서 직선 AB에 내린 수선의 발이다. D는 간단히 다음과 같이 구할 수 있다. [D = A + AB * \frac{AB \cdot AC}{AB \cdot AB}] 설명 AD 벡터를 구하고, A에서 AD를 더해 D를 계산하는 방식이다. 벡터 AB와 AC를 내...
유니티 - 리지드바디와 콜라이더 간단 정리
리지드바디(Rigidbody) Unity Docs https://docs.unity3d.com/kr/2019.4/Manual/class-Rigidbody.html ‘강체’로 번역할 수 있다. 유니티 엔진에서 제공하는 기본 컴포넌트이다. 리지드바디가 존재하는 게임 오브젝트는 물리 엔진의 영향을 받는...
유니티 - 모바일 성능 최적화
프로젝트 설정 … 공통 프로젝트 설정에서 불필요해 보이는 옵션들은 웬만해서 끄는 것이 성능에 좋다. 물리 엔진을 사용하지 않는 경우 Physics - Auto Simulation, Auto Sync Transforms 비활성화 알맞은 Frame Rate 설정하기 A...
유니티 에디터 - 게임 뷰 객체 찾는 코드
Note 흔히 게임 뷰라고 알려져 있는 에디터 윈도우는 UnityEditor.PlayModeView 타입이다. 리플렉션을 통해 접근할 수 있다. Source Code private static Type GameViewType { get { if (gameViewType =...
유니티 - 키보드 입력을 통한 리지드바디 이동, 회전, 점프 기본 코드
Note 입력은 Update(), 물리 처리는 FixedUpdate()로 철저히 구분하는 것이 핵심 리지드바디를 사용한다면, 트랜스폼을 직접 조작하지 말고 반드시 FixedUpdate()에서 리지드바디를 통해서 이동시켜야만 한다. 다음과 같은 증상들이 발생한다면 Update()에서 리지드바디를 조작...
Intel Assembly 기초 간단 정리
목표 비주얼 스튜디오에서 디스어셈블러로 어셈블리 코드를 읽었을 때, 대충이라도 흐름과 동작 이해하기 어셈블리 문법 종류 Intel, AT&T 문법이 있다. eax, [eax] 꼴의 문법은 Intel이며, %eax, (%eax) 꼴의 문법은 AT&T이다. Intel 문법을 따...
유니티 - 매 프레임 처리 성능 테스트 - Update() vs 코루틴
실험 목적 매 프레임 호출되는 Update() 메소드, 코루틴의 성능 비교 실험 조건 운영체제 : Windows 10 유니티 에디터 버전 : 2020.3.17f1 실행 환경 : 유니티 에디터, Windows Standalone Build(Mono, IL2CPP) 실험 대상 [1] Update() 각 컴...
Sphere-AABB Intersection
Sphere 공간의 한 점에서부터 동일한 거리에 있는 점들의 집합 구체의 중심 좌표(Vector3), 반지름(float)을 통해 정의할 수 있다. AABB Axis-Aligned Bounding Box 여섯 면이 모두 각각 X, Y, Z 축에 정렬된 형태의 육면체 ...
C# - Global Mouse Hook
Source Code using System; using System.Runtime.InteropServices; using System.Diagnostics; using System.Threading; using System.Collections.Generic; namespace Rito { /* ...
C# - Global Key Hook
Source Code using System; using System.Linq; namespace Rito { /* [기능] - 키 누름, 키 뗌 이벤트 글로벌 후킹 [프로퍼티] - bool Shift : Shift 키 누른 상태인지...