이동

[Unity] 트랜스폼(Transform) 이동(Move)
유니티 좌표계 프로그램마다 사용하는 좌표계가 다르다. 따라서 좌표계에 대해서 이해하는 것은 매우 중요하다. 유니티에서는 위치를 표현할 때 왼손 좌표계를 이용한다. X축은 빨간색, Y축은 초록색, Z축은 파란색(RGB순서)으로 표현. Transform.position Transform.position은 게임오브젝트의 절대좌표를 나타낸다. Transform.position에 Vector3를 대입하면 해당 위치로 이동. transform.position = new Vector3(x, y, z); Transform.localPosition Transform.localPosition은 게임오브젝트의 상대좌표를 나타낸다. 게임오브젝트의 부모가 있을 경우 부모로부터 떨어진 좌표를 나타낸다. 부모가 없을 경우에는 Tr..
[Unity] 이동, 회전, 크기변경 정리
Unity에서 GameObject의 이동, 회전, 크기변경을 하기 위한 방법에 대해 알아보자. 이동 가장 간단한 방법으로 GameObject의 위치를 직접 지정해 줄 수 있다. transform.position = new Vector3(x, y, z); 현재 위치를 기준으로 x축으로 움직이고 싶을 때 쓸 수 있다. transform.Translate(speed, 0, 0); target 오브젝트에게 일정하게 이동하고 싶다면 위와같이 MoveToward를 쓰면 된다. transform.position = Vector3.MoveTowards(transform.position, target.position, speed); 회전 회전또한 간단하게 회전값을 지정해 줄 수 있다. Quaternion 값으로 지정해야..
C++ 객체 이동 std::move
에 정의됨 // C++ 14 이전에는 constexpr 아님! template constexpr typename std::remove_reference::type&& move(T&& t) noexcept; std::move 는 어떤 객체 t 가 이동 될 수 있음 을 알려준다. 이동 이라 하면 C++ 11 에 도입된 개념으로 t 가 가지고 있는 자원을 다른 객체에게 효율적으로 전달하는 것을 의미한다. std::move 된 객체를 함수에 전달한다면, 우측값 레퍼런스를 인자로 받는 함수(예를 들어서 이동 생성자, 이동 대입 연산자, vector 의 push_back 함수 같은 애들)가 오버로딩 되어서 선택된다. 참고로 우측값 레퍼런스 자체는 rvalue 가 아니라 lvalue 이기 때문에, 이동 생성자나 이동..

[DX11 물방울책] 챕터3 - 트랜스폼 (위치값,회전값,크기값)
1. 크기값 (Scale) 행렬 표현식은 아래와 같다. 예시2 2. 회전값 (Rotation) 예시 -30도만큼 회전 3. 동차 좌표 (homogeneous coordinate) Homogeneous 좌표는 쉽게 말하면 (x, y)를 (x, y, 1)로 표현하는 것. 임의의 0이 아닌 상수 w에 대해 (x, y)를 (wx, wy, w) 즉, homogeneous 좌표계에서 스케일(scale)은 무시되며 (x, y)에 대한 homogeneous 좌표 표현은 무한히 많이 존재하게 된다. 마찬가지로, 3차원의 경우에는 (X, Y, Z)를 (X, Y, Z, 1) 나 (wX, wY, wZ, w)로 표현. Homogeneous 좌표가 활용되는 곳은 주로 컴퓨터 그래픽스(graphics) 쪽이나 3D 비전 쪽이다. ..

BOIDS (군중 알고리즘) RTS AI
스타크래프트의 하이브리드 최적 경로 마이크로 관리는 RTS 게임의 가장 중요한 기능이다. 싱글 유닛 또는 한 그룹의 유닛을 드래그해서 선택을 하여 적을 공격하게끔 하는 것이며 이러한 AI 기능은 구현하고자 할 때 큰 골치거리다. 두 가지의 구현 방법이 있다. 퍼텐셜 필드 알고리즘 : 목표점으로 이끄는(attractive) 인공적인 포텐셜 필드와 장애물로부터 멀어지게 내보내는(repulsive) 인공적인 포텐셜 필드를 형상공간에 구축하는 알고리즘. 군중 이동 알고리즘 : 군중 이동(새 떼라던지 물고기들의 움직임 등 여러 집단이 함께 움직이는)에 대한 알고리즘. 게임 유닛들의 내비게이션은 주로 A*와 같은 최단 경로 알고리즘을 사용한다. 하지만, RTS와 같이 월드가 수시로 변화하는 게임에는 적합하지가 않다..

[Unity] 오브젝트를 움직이는 두 방법과 차이
총 두가지의 방법으로 오브젝트를 움직일 수가 있다 1) Transform.Translate(방향 예) Vector3.left * 속도 * Time.DeltaTime); 2) Vector3 new_pos=오브젝트.Transform.position 또는 localPosition; new_pos.x += (속도 * Time.deltaTime); 오브젝트.Transform.position 또는 localPosition = new_pos; 이 두가지의 가장 큰 차이점은 회전했을 때 바라보고 있는 방향으로 가냐 안가냐이다.