본문 바로가기

[Unity3D] NavMeshAgent 미끄러짐 or 순간이동 현상 현재 개발 중인 게임의 적 유닛은 플레이어를 발견했을 시 공격이 가능한 거리가 될 때까지 플레이어에게 접근한 뒤 공격을 시작한다. 적 유닛은 NavMeshAgent를 이용하여 이동하는데, 멈출 때는 NavMeshAgent.isStopped를 true로 바꿔주었다. 그러자 적 유닛이 멈춘 뒤 다시 이동할 때 순간이동을 하는 현상이 발생했다. 그 이유는 NavMeshAgent에 Velocity가 존재하기 때문이다. isStopped를 했을 때 씬에서 캐릭터의 위치는 그 자리에서 멈추지만, 실제 NavMeshAgent에서의 위치는 Velocity가 zero가 될때까지 미끄러져간다. isStopped를 true로 바꿔주면서 NavMeshAgent.velocity를 Vector3.zero로 초기화해주자 원하는 결..
BOJ 백준 17472 다리 만들기 2 https://www.acmicpc.net/problem/17472 17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또는 1이다. 0은 바다, 1은 땅을 의미한다. www.acmicpc.net 문제 풀이) 1. bfs를 통해 섬들의 정보(좌표)를 저장한다. 2. 각각 섬들 간에 다리를 놓을 수 있는 최소 거리를 저장한 배열을 만들어준다. 3. 크루스칼 알고리즘을 이용하여 최소 비용 신장 트리(MST)를 만들어준다. cf) 크루스칼 알고리즘 - 비용이 가장 작은 간선부터 선택해가는 알고리즘 2번을 거치게 되면 모든 섬들 간의 다리에 대한 정보가 배열에 저장된다. 섬들..
BOJ 백준 17136 색종이 붙이기 #include #include #include using namespace std; const int SIZE = 10; int arrMap[SIZE][SIZE]; bool arrBoolMap[SIZE][SIZE]; int arrCount[5]; struct EmptySpace { int x, y; }; vectorvecEmptySpaces; intg_nCnt = 999999999; intg_nRemainArea = 0; boolg_bFind = false; void Input() { for (int i = 0; i < SIZE; ++i) { for (int j = 0; j < SIZE; ++j) { scanf("%d", &arrMap[i][j]); if (arrMap[i][j]) { g_nRemain..
높이맵 상에서 현재 위치의 y값(높이) 구하기 [DirectX] a1 ㅡ a3 l ㅣ a0 ㅡ a2 4개의 점으로 이루어진 사각형 내에 한 지점(Vector3)의 높이를 알고 싶을 때 1단계 a0, a1, a2 로 이루어진 삼각 폴리곤과 a3, a2, a1로 이루어진 삼각 폴리곤 중 어떤 폴리곤에 속하는 지 알아낸다. Vector3 vPos; // 현재 나의 위치 int x = (int)vPos.x; // 정수 부분 int z = (int)vPos.z; // 정수 부분 float fDeltaX = vPos.x - x; // 소수 부분 float fDeltaZ = vPos.z - z; // 소수 부분 ( 1.f 로 판단하는 것은 정사각형에서만 가능하다. 직사각형의 경우 다른 식이 필요 ) if(fDeltaX + fDeltaZ < 1.f) a0, a1, a2 폴리곤에 속..
[DirectX3D] ASE File 구조 * DirectX 프로젝트에 ASE 파일의 데이터들을 불러올 때 필요한 데이터 목록 및 주의해야할 것들. * 각 데이터에 대한 자세한 정보는 없음. 1. Scene - *SCENE_FIRSTFRAME : 시작 프레임 - *SCENE_LASTFRAME : 마지막 프레임 - *SCENE_FRAMESPEED : 프레임 속도 - *SCENE_TICKSPERFRAME : 프레임당 틱 2. MATERIAL_LIST // 총 Material의 개수 - *MATERIAL_COUNT // Ambient, Diffuse, Specular 모두 r, g, b값을 넣어준 뒤 a에 1을 넣어준다. - *MATERIAL_AMBIENT - *MATERIAL_DIFFUSE - *MATERIAL_SPECULAR // 텍스처 경로 - ..
[Direct3D] View, Projection, ViewPort Matrix [주의] 공부 중인 자료이므로, 틀릴 가능성이 많아 참고만 하는 것이 좋다 cMatrix cMatrix::View(cVector3 & vEye, cVector3 & vLookAt, cVector3 & vUp, cVector3& vRight) { cVector3 l = (vLookAt - vEye).Normalize(); cVector3 r = cVector3::Cross(vUp, l).Normalize(); cVector3 u = cVector3::Cross(l, r).Normalize(); cMatrix viewMat(4); viewMat.SetData( r.x,u.x,l.x,0.f, r.y,u.y,l.y,0.f, r.z,u.z,l.z,0.f, -cVector3::Dot(vEye, r),-cVector..
마름모 내부의 점 x, y : 점의 x, y좌표 centerX, centerY : 마름모의 x, y좌표 a : 가로 길이의 절반 b : 세로 길이의 절반 마름모 방정식 : | x - centerX | / a + | y - centerY | / b = 1 따라서 마름모 내부에 존재하는 지 알려면 | x - centerX | / a + | y - centerY | / b
[트리 순회] Tree Traversal 1. 전위 순회 (preorder) - 노드를 방문 - 왼쪽 서브 트리를 전위 순회 - 오른쪽 서브 트리 전위 순회 2. 중위 순회 (inorder) - 왼쪽 서브 트리 중위 순회 - 노드 방문 - 오른쪽 서브 트리 중위 순회 3. 후위 순회 (postorder) - 왼쪽 서브 트리 후위 순회 - 오른쪽 서브 트리 후위 순회 - 노드 방문 출처) 위키백과 https://ko.wikipedia.org/wiki/%ED%8A%B8%EB%A6%AC_%EC%88%9C%ED%9A%8C 트리 순회 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 전산학에서 트리 순회(Tree traversal)는 트리 구조에서 각각의 노드를 정확히 한 번만, 체계적인 방법으로 방문하는 과정을 말한다. 이는 노드를..