개요 이전 글 TPS게임의 정조준 시스템 구현하기 with ALS 1편 - 카메라 전환 — 메모장 (tistory.com) 본 글에서는 이전에 구현했던 정조준 시스템((Aimimg Down Sight, ADS라고도 한다.)에 흔들림(Sway) 효과를 넣어 좀 더 자연스럽게 보이게 하는 방법에 대해서 설명한다. 구현 방법은 디테일하게 들어가겠지만 알고리즘 자체는 최대한 일반화해서 작성하려고 했다. 정조준 구현 이후 발생한 문제 정조준은 잘 되는데 문제는 너무 생동감이 없다는 것이었다. 왜 그런가 하고 레퍼런스 및 다른 게임들을 해보니 금방 원인을 찾을 수 있었다. 그것은 바로 캐릭터가 가만히 있거나 이동할 때, 마우스로 조준점을 움직일 때, 총기가 그대로 멈춰있는 것이 원인이었다. 직관적으로 구현 방법이 ..
게임 개발/게임플레이
개요 본 글에서는 ALS-Refactor 플러그인을 사용해 TPS게임에서 사용하는 정조준 시스템((Aimimg Down Sight, ADS라고도 한다.)을 구현하는 방법에 대해서 살펴볼 것이다. ALS-Refactor 플러그인을 사용했지만, Enhanced Input System을 제외하곤 플러그인에서 제공하는 기능은 거의 사용하지 않았다. 따라서 플러그인 사용자는 물론 미사용자도 비슷하게 구현할 수 있을 것이라 생각한다. 자료 조사 ALS가 기본적으로 1인칭 조준 카메라를 지원하긴 했지만 별로 마음에 들지 않았다. GTA 5의 1인칭 시스템과 비슷한 수준으로, 3인칭 캐릭터에다 단순히 카메라만 달아놓고 움직이는 격이었다. 그래서 우선 레퍼런스를 배틀그라운드, 베일드 엑스퍼트로 잡고 구글로 자료조사를 시..
최단 경로 찾기 알고리즘 최단 경로 찾기 알고리즘에는 여러가지 알고리즘들이 있는데, 상황에 따라 다르게 사용할 수 있다. 게임이 어떤 케이스인지 생각해보고 적용하면 된다. 한 개의 시작노드와 한 개의 도착노드 Greedy Best First Search - 휴리스틱 값에 기반한 우선순위 큐 사용. 즉 f(x) = h(x) A* - 게임에 주로 사용된다. 아래 설명 참고 한 개의 시작노드와 여러 개의 도착노드, 또는 여러 개의 시작노드와 한 개의 도착노드 Breadth First Search(BFS) - 가중치 없는 간선 Dijkstra(다익스트라) - 음수가 아닌 가중치가 있는 간선 Bellman-Ford(벨만포드) - 양수 또는 음수 가중치가 있는 간선 여러 개의 시작노드와 여러 개의 도착노드 Floy..
타일형 게임을 구현할 때 유니티에서 제공하는 타일맵을 사용하면 팔레트를 이용해 쉽게 타일을 배치 할 수 있다는 장점이 있다. 단순히 타일을 배치하는 것만으로 충분할 수도 있지만, 구현하려는 게임에 따라 각 타일에 데이터를 저장 해야 할 때가 있다. 어떻게 해야할까? 먼저 타일맵부터 설명하고 그 이후 구현 방법을 서술하겠다. 타일맵에서 특정 좌표의 타일 얻기(또는 셀 좌표 얻기) 타일맵은 그리드 형태로 되어있으며 각 타일(셀)의 좌표는 다음과 같이 얻을 수 있다. Tilemap tilemap; // 타일맵 (GetComponent로 얻거나 인스펙터에서 할당해줬다고 가정) Vector3 localPos; // 로컬 포지션 Vector3 worldPos; // 월드 포지션 Vector3Int worldToCe..