vector 4

[유니티] 방향, 크기, 회전 (2)

유니티 C# 벡터 Vector type 앞선 [유니티] 방향, 크기, 회전 (1) 포스트에서는 수학적 의미에서 벡터를 다루었다. 이번 게시글에서는 게임 개발에 필요한 기본적인 벡터 수학을 유니티 C#에 적용하는 방법을 알아보자. 유니티는 벡터를 표현하기 위해 Vetor2, Vector3, Vector4를 제공하고 있다. 가장 많이 사용할 Vector3의 정의를 보기 위해 유니티 공식 홈페이지에 접속해 보면 다음과 같이 설명하고 있다. 이때 주목해야할 점은 Vector 타입이 구조체(struct)로 선언되어 있다는 점이다. 클래스로 선언하지 않고 구조체를 이용한 이유는 값 타입으로 동작하게 하여 복사를 했을 때 수정되는 것을 막기 위해서다. 직관적으로 이해하기 위해 다음 예제를 보도록 하자. Vector3..

Game/Unity 2023.03.17

[유니티] 방향, 크기, 회전 (1)

벡터 수학 벡터의 정의와 좌표의 의미 유니티에서 벡터를 이해하는 것은 매우 중요하다. 벡터(Vector)란 일반적으로 크기와 방향을 가진 물리량으로 정의하지만, 세 가지 관점으로 넓혀서 정의할 수 있다. 공간상의 화살표로서의 벡터 나열된 숫자 데이터를 묶는 단위로서의 벡터 벡터 연산을 만족하고 정해진 개수의 원소를 가지는 벡터 일반적으로 게임 개발에서 벡터는 주로 위치, 방향, 속도를 나타낼 때 사용된다. 이를테면 위치를 표현하기 위한 Vector3(0, 1, 1)은 어떤 물체가 x = 0, y = 1, z =1의 위치에 존재한다고 해석할 수 있다. 이를 유니티의 메서드인 DrawLine을 이용해 그려보자. Debug.DrawLine()은 start와 end 사이를 선으로 그려주는 메서드다. 이를 이용하..

Game/Unity 2023.02.15

[자료구조] vector with C++ (2)

std::vector 구현  이제부터 vector를 간단하게 구현해 보겠다. 우리의 목적은 크기가 유동적으로 조절되는 배열을 만드는 것이고, 용량은 1.5배씩 늘리도록 하겠다. #include using namespace std;templateclass vector{ T* _data = nullptr; // 데이터의 주소값 int _size = 0; // 크기 int _capacity = 0; // 용량 먼저 벡터에 담을 데이터의 주솟값과, 크기, 용량 변수를 초기화해준다. public: vector() { } // 기본 생성자 ~vector() // 소멸자 { if (_data) // 소멸자가 실행될 때 벡터 내에 데이터가 존재하면 delete[] _data; // 할당 해제 } 기본 생성자를 만..

CS/자료구조 2023.02.11

[자료구조] vector with C++ (1)

std::vector 지난 시간에 크기가 고정되는 배열 std::array에 대해 살펴보았다. 예고한 것처럼 C 스타일의 배열의 한계를 극복한 가변 크기 배열 std::vector에 대해 알아보자. 벡터는 Cpp reference에 다음과 같이 정의되어 있다.   직역하자면 연속적으로 저장되는 가변 배열이라는 의미다. 즉, 연속된 자료구조이며 크기를 늘리거나 줄여 원소를 변경할 수 있는 배열이라고 생각하면 되겠다. 이러한 벡터를 사용하기 위해서는 vector 라이브러리를 받아와서 다음과 같은 형태로 사용하면 된다. #include #include using namespace std;int main(){ vector v = { 1,2,3,4,5 }; // 크기가 5인 int형 가변 배열 vect..

CS/자료구조 2023.02.10