UNITY · C# · GAME DEVELOPMENT

게임 개발일지_이경현

Unity와 C#을 중심으로 공부한 내용과 직접 구현한 기능, 문제 해결 과정을 정리합니다.

반응형

[Unity 2D] 드래그 이동의 대각선 입력이 직선으로 나뉘던 문제 개선

thumbnail

드래그 이동을 구현한 뒤 방향을 확인하면서 한 가지 문제가 있었다. 플레이어를 오른쪽 위로 끌었는데 의도한 대각선 경로 대신 오른쪽과 위쪽 이동이 번갈아 들어가는 현상이 나타났다. 목적지를 터치해서 BFS로 경로를 만드는 방식에서는 대각선 이동이 정상적으로 나왔고, 문제는 직접 드래그하는 입력에서만 발생했다. 처음에는 대각선 판정값을 조정하면 될 거라고 생각했지만, 실제로는 포인터 입력을 경로로 바꾸는 기준 자체를 수정해야 했다.1. 수정 전후 비교기존에는 대각선 방향으로 드래그할 때도 경로가 → ↑ → ↑처럼 직교 방향으로 분해될 수 있었다. 수정 후에는 현재 Cell 중심에서 포인터가 향하는 방향을 직접 판정하도록 변경했다. 아래부터는 왜 이런 현상이 발생했고 어떻게 코드를 수정했는지 정리했다.2. ..

자세히 보기 →

[Unity2D / TileMap] 캐릭터 Grid 이동 (Pointer Drag)

thumbnail

이전 글에서는 Grid Cell을 터치했을 때 BFS로 목적지까지의 경로를 찾는 방식을 구현했다.2026.09.23 - [Project/Project_P] - [Unity2D / TileMap] 캐릭터 Grid 이동 (BFS) 이번에는 캐릭터를 길게 누르고 직접 끌어서 이동 경로를 만드는 기능을 추가했다. 최종적으로 MovementPlan을 만들어 PlayerMover에 전달한다는 점은 이전과 같다. 차이가 있다면 목적지 하나로 경로를 찾는 것이 아니라, 포인터가 움직이는 방향에 따라 경로를 한 칸씩 추가하거나 되돌린다는 점이다. 이번 글에서는 전체 호출 흐름을 먼저 정리하고, 구현하면서 신경 썼던 cellDelta 변환, UpdateDrag()의 반복문, DragPathBuilder의 경로 수정 과정을..

자세히 보기 →

[CS] Object와 박싱/언박싱

thumbnail

2026.09.22 - [TIL] - CS - 값 형식과 참조 형식 CS - 값 형식과 참조 형식값 형식과 참조 형식은 변수가 어떤 데이터를 담는지에 따라 구분이 됩니다. 그렇다면 앞서 언급했던 변수란 무엇일까요?변수란 코드에서 보자면 값을 대입시켜 변화시킬 수 있는 요소이지만,unitylearn.tistory.com박싱(Boxing)박싱(Boxing)은 값 형식의 데이터를 object와 같은 참조 형식으로 다루기 위해 힙에 객체로 포장하는 과정입니다.위 그림에서는 값 형식인 int의 값 20을 object 형식의 변수에 대입하고 있습니다.겉으로 보면 단순히 20을 obj에 넣는 것처럼 보이지만, 실제로는 int와 object의 저장 방식이 다르기 때문에 별도의 과정이 필요합니다. int는 값 형식(Va..

자세히 보기 →

[Unity2D / TileMap] 캐릭터 Grid 이동 (BFS)

thumbnail

2026.09.23 - [Project/Project_P] - Unity2D - TileMap 캐릭터 Grid 이동 (Input System, GridMap) Unity2D - TileMap 캐릭터 Grid 이동 (Input System, GridMap)플레이어 이동은 Grid를 선택하면 해당 위치까지 이동하는 방식과, 캐릭터를 직접 드래그해서 원하는 경로를 지정하는 방식 두 가지로 구현했습니다. 두 방식 모두 Pointer 입력과 Grid 좌표를 공통unitylearn.tistory.com이전 포스팅에서는 Input System을 통해 Pointer 입력을 받고, 선택한 위치를 TileMap의 Grid Cell로 변환하는 과정까지 정리했습니다. 이번에는 캐릭터가 선택한 Grid까지 이동할 수 있도록 B..

자세히 보기 →

[Unity2D / TileMap] 캐릭터 Grid 이동 (Input System, GridMap)

thumbnail

플레이어 이동은 Grid를 선택하면 해당 위치까지 이동하는 방식과, 캐릭터를 직접 드래그해서 원하는 경로를 지정하는 방식 두 가지로 구현했습니다. 두 방식 모두 Pointer 입력과 Grid 좌표를 공통적으로 사용하기 때문에, 이번 포스팅에서는 먼저 Input System을 이용한 입력 처리와 Grid 좌표 변환 과정을 정리해보겠습니다.1. Input System을 통한 플레이어 입력 받기 Point는 현재 Pointer가 화면의 어디에 있는지 받기 위한 액션으로 PC에서는 마우스 위치가 될 수 있고, 모바일에서는 터치 포인터 위치가 될 수 있습니다.값 자체는 화면 좌표로 받게 되며, 포인터 위치가 변할 때마다 그 값을 그대로 전달받기 위해서 Pass Through를 사용했습니다. Press는 Point..

자세히 보기 →

[CS] 값 형식과 참조 형식

값 형식과 참조 형식은 변수가 어떤 데이터를 담는지에 따라 구분이 됩니다. 그렇다면 앞서 언급했던 변수란 무엇일까요?변수란 코드에서 보자면 값을 대입시켜 변화시킬 수 있는 요소이지만, 메모리 관점에서 보면 '데이터를 담는 일정 크기의 공간'이라는 의미를 갖기도 합니다. 그래서 값 형식은 변수가 값을 담는 데이터 형식이고, 참조 형식은 변수가 값 대신 값이 있는 곳의 위치(주소)를 담는 데이터 형식입니다. 그렇다면 왜 값 형식과 참조 형식을 나눠서 쓰게 된걸까요? 값 형식의 지역 변수는 스택 프레임에서 관리될 수 있습니다. 다만 값 형식이라고 해서 항상 스택에 저장되는 것은 아니며, 여기서는 스택의 동작을 이해하기 위해 지역 변수를 예시로 들어보겠습니다.void Test(){ int a = 1; ..

자세히 보기 →

[Unity Mobile] 조이스틱 방향 떨림과 격자 코너 통과 문제 해결

Paint War는 격자 타일 위를 이동하며 영토를 확보하는 게임입니다. 모바일 조이스틱의 입력 방향이 조금만 흔들려도 캐릭터가 인접 타일의 모서리 쪽으로 움직일 수 있기 때문에, 조작 방향을 안정적으로 만드는 작업이 필요했습니다.1. 왜 조이스틱 방향이 흔들릴까?조이스틱은 화면에서 손가락이 움직인 위치를 Vector2로 전달합니다. 이 값은 정확히 상·하·좌·우·대각선 8방향으로만 들어오는 것이 아닙니다. 예를 들어 오른쪽으로 움직이려고 해도 입력이 (0.98, 0.12)처럼 조금 기울어질 수 있습니다.이를 매 프레임 가장 가까운 방향으로 반올림하면 8방향 이동은 가능하지만, 두 방향 사이의 경계에 손가락이 걸렸을 때 방향이 계속 바뀔 수 있습니다. 그래서 입력을 방향으로 바꾸는 과정과 방향을 유지하는..

자세히 보기 →

[Unity Multiplayer] 격자 텔레포트와 이동 경로 위 폭탄 탈취 구현

Paint War에서 텔레포트는 단순히 캐릭터 위치를 바꾸는 이동기가 아닙니다. 격자 규칙을 지키면서 순간 이동하고, 이동 경로에 있는 상대의 폭탄도 아군 소유로 바꾸도록 구성했습니다. 1. 텔레포트 거리는 타일 개수로 계산하기격자 게임에서 월드 좌표 기준으로만 이동 거리를 정하면 타일 크기가 바뀌었을 때 결과가 어긋날 수 있습니다. 그래서 그리드가 준비되어 있으면 TileSize를 사용해 이동 거리를 계산하고, 레벨에 따라 이동할 타일 수도 달라지도록 했습니다.private int GetCurrentTeleportTileSteps(){ int level = levelStats != null ? levelStats.Level : 1; int steps = Mathf.Max(1, teleport..

자세히 보기 →
반응형