Unity : Ray, Raycast 및 RaycastHit
·
Unity
Unity의 Physics.Raycast는 직선을 씬에 투영하여 대상에 적중되면 true를 리턴하는 물리 함수입니다. Raycast 함수는 캐스팅 성공 실패에 따른 결과만 리턴하는 간단한 형태에서부터 대상과 Ray의 충돌에 관련된 자세한 정보를(직선과 객체의 교차 정보. 거리, 위치, 캐스팅에 검출 된 객체의 Transform에 대한 참조 등) 리턴하는 다양한 버전이 제공되고 있습니다. 이번 포스트에서는 Raycast 함수를 사용하기 위해 알아야할 필수적인 요소들을 살펴보도록 하겠습니다. Unity에서 Raycast를 사용하는 방법 Unity 2020.3 버전 기준으로 Physics.Raycast는 다양한 버전으로 오버로드되어 제공되고 있습니다. 파라미터가 많아 복잡해 보이지만 디폴트 파라미터들을 제외하..
Unity의 IL2CPP란?
·
Unity
소개 Unity는 iOS와 Android와 같은 모바일 플랫폼에서 실행하기 위해 Mono를 사용합니다. 하지만, Mono는 IL(Intermediate Language)을 Native Code로 변환하는 Just-in-time(JIT) 컴파일러를 사용합니다. 이것은 모바일 기기에서 성능 문제를 일으키기 때문에 Unity는 AOT(Ahead-of-time) 컴파일러인 IL2CPP를 도입했습니다. 이 글에서는 Unity의 IL2CPP에 대해 자세히 설명하겠습니다. IL2CPP란 무엇인가요? IL2CPP는 Unity에서 사용하는 AOT 컴파일러입니다. 이 컴파일러는 C# 코드를 C++ 코드로 변환합니다. 이후 C++ 코드는 기기의 네이티브 코드로 컴파일됩니다. 이 방식은 JIT 컴파일러보다 빠르고, 메모리 사..
C# 튜플 자료형
·
C#
소개 C#에서 튜플(Tuple)은 여러 값을 변수 하나에 저장할 수 있는 자료형입니다. 튜플은 서로 다른 데이터 형식의 값을 저장할 수 있으며, 소괄호로 묶인 값의 목록으로 정의됩니다. 튜플은 코드의 가독성과 유지 보수성을 향상시키며, 메서드에서 여러 값을 반환해야 하는 경우에 특히 유용합니다. 구조 튜플은 소괄호로 묶인 값의 목록으로 정의됩니다. 각 값은 데이터 형식과 값으로 구성됩니다. 다음은 튜플의 구조를 보여주는 예제입니다. // 튜플 정의 Tuple person = (25, "John"); // 튜플의 구조 ( int age = 25, string name = "John" ) 위의 예제에서, Tuple은 int와 string 형식의 값을 가진 튜플을 정의합니다. 튜플은 다음과 같은 구조를 갖습니..
실수형 변수 decimal, float, double
·
C#
소개 C#에서는 실수형 변수를 선언하여 부동 소수점 방식과 고정 소수점 방식으로 값을 저장할 수 있습니다. 이번 글에서는 C#에서 제공하는 실수형 변수 중 decimal, float(single), double에 대해 설명하고, 이들 변수가 사용하는 고정 소수점 방식과 부동 소수점 방식에 대해 자세히 살펴보겠습니다. decimal decimal은 C#에서 고정 소수점 방식을 사용하는 실수형 변수 중 하나입니다. decimal은 128비트 부호 있는 실수형 변수로, 28자리의 정밀도를 가집니다. 이는 매우 큰 수나 소수점 이하 자리수가 많은 수를 정확하게 표현할 수 있다는 것을 의미합니다. decimal 변수를 선언할 때는 다음과 같은 방법을 사용합니다. decimal myDecimal = 123.45m;..
Unity 확장형 함수
·
Unity/Tip
C# 3.0 이후 버전에서는 확장 메서드(Extension Method)라는 개념이 추가되어, C#에서 클래스의 기능을 확장시키는 기능을 제공합니다. 확장 메서드는 해당 클래스의 인스턴스에서 호출할 수 있는 메서드를 추가하는 것입니다. 이렇게 하면 해당 클래스의 인스턴스를 먼저 생성한 다음, 확장 메서드를 호출할 수 있습니다. Unity에서는 MonoBehaviour 클래스를 상속받는 클래스에서 확장 메서드를 정의할 수 있습니다. 확장 메서드란? C#에서는 기본적으로 정의된 클래스에 대해서만 메서드를 사용할 수 있습니다. 하지만, 우리가 작성한 클래스에 대해서도 기본적인 메서드를 사용할 수 있도록 C#에서는 확장 메서드를 제공합니다. 확장 메서드는 해당 클래스의 인스턴스에서 호출할 수 있는 메서드를 추가..
Perlin/Simplex Noise Algorithm
·
Unity/Tip
소개 Perlin Noise와 Simplex Noise는 프로시저럴 생성 알고리즘 중 가장 인기있는 알고리즘입니다. 이번 글에서는 Unity에서 Perlin/Simplex Noise를 생성하는 방법과 그 응용 예제를 살펴보겠습니다. Perlin Noise Perlin Noise는 1983년 Ken Perlin이 개발한 알고리즘으로, 자연스러운 잡음을 생성하는 데 사용됩니다. 이 알고리즘은 2차원 또는 3차원으로 구성된 그리드에서 각 좌표의 값에 대한 임의성을 추가하여 자연스러운 무작위 패턴을 만듭니다. Perlin Noise를 Unity에서 생성하려면 다음과 같은 코드를 사용합니다. public class PerlinNoise : MonoBehaviour { public float scale = 1f; ..
Boids/Flocking Algorithm
·
C#/Algorithm
소개 Boids/Flocking Algorithm은 모의 떼짓기 알고리즘으로써, 새떼, 물고기 떼, 개떼 등의 떼 집단에서의 행동을 모델링하는 알고리즘입니다. 이 알고리즘은 자연에서 나타나는 다양한 떼짓기 행동을 흉내내어, 가상의 떼집단을 시뮬레이션 하는 데 사용됩니다. 이번 글에서는 C#에서 Boids/Flocking Algorithm을 구현하는 방법에 대해 자세히 살펴보겠습니다. Boids/Flocking Algorithm이란? Boids/Flocking Algorithm은 크기, 위치, 방향 등의 속성을 가진 개체를 시뮬레이션하는 알고리즘입니다. 이 알고리즘은 개체가 떼를 지어 움직이는 행동을 모방하여, 가상의 떼집단을 구현할 수 있습니다. 이 알고리즘은 크게 3가지의 규칙을 적용하여 구현됩니다. ..
C# 패턴식 switch문
·
C#
소개 C# 8.0부터 패턴식 switch문이 추가되었습니다. 이전의 switch문보다 더욱 간결하고 유연한 코드를 작성할 수 있게 되었습니다. 이번 글에서는 C# 8.0의 패턴식 switch문의 종류와 사용법에 대해 자세하게 살펴보겠습니다. 패턴식 switch문이란? 패턴식 switch문은 switch문의 조건식에 패턴을 사용할 수 있게 해줍니다. 이를 통해 간결하고 유연한 코드를 작성할 수 있습니다. C# 8.0에서는 다양한 종류의 패턴을 사용할 수 있습니다. 상수 패턴 가장 기본적인 패턴은 상수 패턴입니다. 상수 패턴은 switch문의 조건식과 비교할 상수값을 사용합니다. string fruit = "apple"; switch (fruit) { case "apple": Console.WriteLine..