개인 프로젝트

게임 제작일기 2

Hun die 2023. 9. 27. 15:18

먼저 유닛을 대량으로 싸움을 붙여봤는데 잘 싸우는 것 같다.

 

그리고 이제 유닛에게 스킬을 하나씩 넣어주기로 했다.

그리고 스킬을 넣기 전 어떤 상황에 어떤 상태를 만들지 정하기 위해 각 트리거를 enum으로 나누고 시작했다.

그리고 'Effect' Class를 만들고 유닛에게 일어날 상황 3가지를 나누고 'Effect'를 상속시켰다.

 

Effect_Damage : Effect  =  데미지를 주는 상황

Effect_DamageOverTime : Effect  =  지속적으로 데미지를 주는 상황

Effect_AddStatus : Effect  =  유닛의 스텟을 바꾸는 상황 (힘 버프, 쉴드 증가 등)

 

그리고 데미지의 종류도 3종류로 나누어 만들었다.

 

동영상을 보면 15씩 지속데미지를 주는 스킬을 쓰는 '궁수', 자세를 취하고 큰 피해를 주는 '마법사', 피해를 막는 쉴드를 전개하는 '중보병'(데미지 0씩 들어가는 상황) 을 볼수있다.

 

다음으로 유닛을 배치하기위해 이동시키는 것과 UI를 추가했다.

 

유닛 정보를 나타내는 UI는 struct를 만들고 오브젝트에 만들어둔 프리팹을 넣으면 각 UI를 find하고 유닛을 입력하면 값을 보여주도록 했다.

 

그리고 유닛을 클릭하는 건 아래 타일에 레이어 값으로 마우스 위치의 오브젝트를 찾는 방식을 사용했다.

public GameObject GetMouse_PointToLayer(string layerName)
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit[] hit;

            hit = Physics.RaycastAll(ray, 100f);
            for (int i = 0; i < hit.Length; i++)
            {
                if (hit[i].collider.gameObject.layer == LayerMask.NameToLayer(layerName))
                {
                    return hit[i].collider.gameObject;
                }
            }
            return null;
        }

 

다음으로 한 일은 적이 보이자 마자 싸우는 상황을 바꾸기위해 싸우는 상황을 3가지로 구분하고 싸워야할때만 싸우게 개선했다.

 

이제 유닛을 각 자리에 배치하고 싸움을 붙일 수 있게 되었다.

 

그리고 플레이어에게 아이템을 지급하고 얻은 아이템을 사용할 수 있도록 만들었다.

임시로 만든 아이템으로는

1. 유닛을 필드에 배치하는 아이템

2. 유닛의 스텟을 올리는 아이템

 

두종류로 만들었다.

 

 

아래 버튼을 클릭하고 필드를 누르면 유닛을 배치하면 유닛이 배치되고 스텟을 주는 아이템을 사용하면 유닛의 스텟이 오르는 것을 볼 수 있다.

 

 

다음은 싸움이 끝난 이후로의 결과창이나 상점, 이벤트 등을 만들어 볼 생각이다.

 

'개인 프로젝트' 카테고리의 다른 글

[개인 프로젝트] AutoBattle  (0) 2024.02.08
게임 제작일기 1  (1) 2023.09.24
[개인 프로젝트] Command - BOT  (0) 2023.03.13
[개인 프로젝트] Blind Game  (0) 2023.03.13