본문 바로가기
728x90

전체 글216

[Day 5-2] 유닛 세 종류 모두 구현 완료 및 공격 시스템 수정 [2021. 07. 16] 공격 시스템이 다 마무리 된줄 알았으나, 애니메이션까지 탑재하고 실험을 해봤는데, 실수한 부분을 발견했다. 처음에 짠 공격 스크립트 구조는 유닛들이 공격 애니메이션을 취하지도 않고 빌딩 스스로 GetAttacked()를 하는 것이다. 유닛들의 Attack()함수에 유닛 혹은 빌딩 두 개 다 들어가게 할려고 일반화를 사용할려고 했으나, 서로 성질이 다른 부모들이어서 내가 짜 놓은 구조에는 일반화로 구현하기가 힘들었다. 그래서 방법을 계속 생각해봤고 마침내 정리를 할 수 있었다. 위에 Soldier.cs일부분 사진 속에 Attack도 인터페이스 를 제약으로 두는 일반화를 사용하고 싶었으나. 다른 것은 다 되는데 transform.LookAt() 괄호 안에 transform을 넣어야.. 2021. 7. 16.
[Day 5-1] 확장메서드 수정 + 미니맵 구현 [2021. 07. 16] [미니맵 구현] 미니맵 부분은 너무 쉬우니 과정 설명을 간략화하겠다. 그런데 문제점이 있다. 구현을 해보니 프레임을 반이나 깎아 먹는 것이다..; 원인을 생각해보면 프레임을 잡아 먹을 수 밖에 없는 것이 이미지 파일을 보여주는 것이 아니라 맵 전체를 다른 카메라로 다시 한 번 더 보여주는 것이기 때문에 당연한 것이다. 그래도 100FPS아래로 안떨어져서 다행이긴하지만 물론 고칠 예정이고, 중요한 기능들을 다 끝낸 다음에,방법을 몰색할 것이다. [확장메서드 구현] 저번에 올렸던 확장메서드는 솔직히 연습 겸이라도 코드 작성하면서 스스로도 이걸 굳이 이렇게 할 필요가 있나 싶은 것이다. 그래서 저렇게 간단한 것에는 확장메서드를 쓰지 않고 그냥 if/else if로 끝내버리고 다른 것.. 2021. 7. 16.
[Day 4-2] 유닛 공격 구현 완료, 국가 영토 및 점령 시스템 구현 완료 [2021. 07. 15] 현재시간 20:27 4-1 글을 올리고 한 시간 반 정도 자고일어났다. 다시는, 휴식 자체는 괜찮은데, 자면 안될것같다 ㅋㅋ 푹 잔것도 아니고 애매하게 자고일어나서 그런가 머리가 잘 안돌아가더라ㅠ 그래도 구현 해야할 기능들은 구현을 완료했다. 머리 식히고나서 내일이나 기회 될때 오늘 구현한 것들 리팩토링 해야겠다. 일단 순서는 이렇다. 1. 국가 시스템 구현 2. 유닛 소속 국가 부여 3. 공격 시스템 구현 4. 점령 시스템 구현 [국가 시스템 구현] 빌딩(국가)이라는 건물 자체의 스크립트를두고 국가가 지니어야할 기능들은 따로 Building->Systems 폴더안에 개별적으로 만들어놨다. 기능 구현 사진을 보면 내가 보유한 영토(타일)의 숫자와 세금 그리고 그 두 가지로 계산.. 2021. 7. 15.
[Day 4-1] 유닛 세분화 + 유닛 매니저 구현, 확장 메서드로 스텟 부여 [2021. 07. 15] 어제 컨디션이 너무 안좋아서 유닛 이동 수정이랑 카메라 구현만 했었다. 어제 못한만큼 오늘 속도를 낼 것이다. 일단 휴식을 취하기 전에 오늘 오전에 구현한 것을 정리할려고 한다. [유닛 세분화] 클래스 계층은 부모: Units (abstract) 자식: Soldier(병사), Tank(탱크), FieldGun(야포)이다. 일단 유니티 상에서 스크립트를 만들어야한다. ▼ UnitData.cs ▼ SpawnManager.cs ▼ UnitHandler.cs 구조는 이렇다. 지구 씬에서 유닛을 구매할 시에 SetSpawnUnitStats함수 안에 구입한 유닛을 인자로 넘겨서 UnitHandler에서 인자로 받은 유닛의 타입에 맞는 데이타를 넘겨줌으로써 구입한 유닛에 스텟이 세팅된다. .. 2021. 7. 15.
[Day3] 카메라 쿼터 뷰 시점 구현 및 유닛 이동 수정 완료 [2021. 7. 14] [카메라 쿼터뷰 구현] 문명과 같이 쿼터 뷰 시점을 구현하고싶었다. 처음 먼저 생각 난 것은 EmptyParent를 하나 만들어서 방향키를 누르면 카메라가 아닌 Empty부모를 움직이는 것이였다. 카메라 각도는 대각선 아래로 고정이 되어있기 때문에 카메라 자체를 움직이게 하고 transform.forward 값을 이용해 움직인다면 대각선 아래로 내려가기 때문이다. 이제 유니티 상에서 구조를 잡아놨으니 스크립트를 짜야한다. 움직임을 FixedUpdate안에 Translate으로 움직여야할지 아니면 Update안에 transform.position += 이런 식으로 해야할지 고민을 해봤고 그 둘의 FPS를 비교 해봤다. CPU ms차이도 없고 FPS도 다를 것이 없기 때문에 보기에 .. 2021. 7. 14.
[Day 2-2] 유닛 선택을 활용한 유닛 이동 구현 [2021. 7. 13] 처음에 머릿속에서 그려놓은 이미지가 딱 이런 방식이었다. 각각의 유닛의 이동 가능 거리 스텟에 따라 그에 맞는 이동 가능한 타일들이 미리 그려지고 실제로 클릭 시 이동하는 것인데. 문제는 구글링이나 유튜브에서 찾아보면 대부분 이러한 것들을 2차원 배열에 넣어놓고 a*, 깊이우선, 너비 우선 탐색 등으로 해결하는 모습밖에 보지를 못했다. 일단 처음부터 내가 만든 맵에선 타일들을 2차원 배열에 넣는 것은 조금 불가능해 보였다. (물론 계속 시도하면 무조건 방법을 찾게 될 것이지만 시간상 효율적인 방법을 생각해봐야 한다) 그 이유는 처음부터, Tile Palette에서 브러시로 맵을 만들 때, 가로와 세로 정렬을 생각하면서 만들지 않았기 때문이다. 그렇기 때문에 배열에 타일들을 순서대.. 2021. 7. 13.
[Day 2-1] 유닛 선택 및 맵과 유닛의 상호작용 구현 [2021. 7. 13] 이전에 만들어 놓은 HexaGrid 타일 맵을 이용하여 유닛을 선택 후 이동 및 맵과 유닛의 상호 작용을 오전에 구현 하였고. 오후에는 유닛 이동을 최종적으로 마쳤다. 블로그 작성은 매일 밤 작업을 마무리 하고 올리기 때문에 코드는 이전에 오류 되었던 것들이 포함되어있지 않을 수 있다. 1. 일단 유닛과 상호작용을 할 때 각각의 타일들이 반응을 해야하므로 타일 전용의 Script를 만들었다. World씬이라서 WorldTile이라고 네이밍했다. 2. Units -> Systems 폴더에는 월드씬 내에 유닛과 관련된 시스템 적인 기능들을 수행하는 스크립트를 모아놓는 곳이고 그리드 위에 놓여져있는 유닛들을 통제하는 GridUnitSystem.cs와 유닛을 선택할 때 필요한 Selec.. 2021. 7. 13.
[Day 1-2] Hexagrid Tilemap을 활용한 맵 구현 [2021. 07. 12] 문명과 같이 HexaGrid를 이용한 맵을 구성하고 싶어서 여러 가지 방법을 찾아봤다. 이미 유니티에서 기본으로 제공해주는 Grid 컴포넌트가 있었고 그것을 활용 해보기로했다. 1. 먼저 Project Settings -> Package Manager에서 Advanced Settings에 있는 Enable Pre-release를 체크 표시해준다. 2. 그런다음 Windows -> package Manager 에서 2D Tilemap 두 개를 다운 받는다. 3. 하이어라르키에서 2D object 생성시 Tilemap을 생성할 수 있었다. 4. 처음엔 대략 요정도 사이즈로 잡고 시작했다 5. 에셋스토어에서 Hexa를 검색하니 로우폴리의 헥사 프리펩을 올려놓은 사람이 감사하게도 있었.. 2021. 7. 13.
[Day 1-1] 약식 기획서 [2021. 07. 12] 어제자 오후부터 진행했던 경과를 작업을 마무리 한 뒤에 올릴려고 했으나, 자정이 넘어가서 오늘 올리게되었다. 일단 내가 원하는 게임 방식은 턴 제(turn-based)이며 두 씬을 기준으로 구분 되어있다. 1. Space씬 - 게임을 시작할 시에 처음 화면으로 좌측 하단에 UI 세 개가 있다. 왼쪽 순으로 정치, 군사, 경제를 관리할 수 있으며 우주 씬에서 변경한 값이 월드 씬 내에서도 영향을 받는다. - 정치는 법을 제정할 수 있으며, 소득세를 걷는다. 정치 안정성이 존재하고 0.0%가 되는 순간 정권 몰락으로 패배하게된다. - 군사는 보병, 공군, 장교가 존재한다. 장교가 없어도 부대 기능은 가능하지만 장교를 등용하고 배치를 한다면 해당 부대는 특정 능력치++ 가 된다. 훈.. 2021. 7. 13.
728x90