오늘 또다시 소원의 섬 개발을 진행했다.
물론 숙제가 있지만 하루 정도는 개발에 투자해도 괜찮을 것 같았다.
일단 인풋 시스템을 완성했다.
public void OnTouch(InputValue value) {
Vector2 touchPos = value.Get<Vector2>();
Vector3 worldPos = Camera.main.ScreenToWorldPoint(new Vector3(touchPos.x, touchPos.y, 10));
worldPos.z = 0;
targetPos = worldPos;
}
마우스의 위치로 이동하는 코드를 완성했다.
이전에 실패했던 이유를 10분만에 찾아내서 내 의도대로 완성했다.
결국은 모바일로 만들거라서 이렇게 구상했다.
디펜스 장르라서 움직임이 필요 없는데, 겨우 마을에서 이동하려고
조이스틱을 쓰는건 유저 입장에서 너무 불편할 것 같아 누른 곳으로 움직이는
방식을 채택했으며 상호작용 버튼을 추가해서 그때그때 알맞은 행동이 나오게 구상했다.
이후에는 마을을 조금씩 구상해나가기 시작했다.
저 오른쪽의 크고 검은 원은 게임을 시작하기 위한 장소이다.
여러가지 스테이지가 있는데, 저기가 마을의 문이고 이동수단을 타고 나간다는 컨셉이다.
상호작용이 가능한 장소들은 검은 원으로 표현해 놓을 생각이다.
아직 마을에 몇개의 장소를 넣을지는 구상안했는데 조만간 해야겠다.
아무튼, 여기까지 만든 이후에는 상호작용 시스템을 만들기 시작했다.
place라는 스크립트를 만들어서 플레이어가 일정 범위 안에 있는지 판단하는
시스템을 만들기로 했다. Physics.overlap 류 메소드를 활용해서 쉽게 만들 수 있었다.
bool CheckIsPlayerInRange(float range) {
Collider2D[] nearThings = Physics2D.OverlapCircleAll(transform.position, range);
bool IsPlayerInRange = false;
for(int i = 0; i < nearThings.Length; i++) {
if(nearThings[i].gameObject.CompareTag("Player")) {
IsPlayerInRange = true;
}
}
return IsPlayerInRange;
}
이걸로 판단해서 Player에게 있는 bool 값을 바꿔주는 형식으로 진행했다.
void Update()
{
player.IsPlayerInRange = CheckIsPlayerInRange(InteractRange);
}
지금 당장은 Update()문에서 진행했는데, 안쓰는게 좋다는 건 알고 있다.
리팩토링이나 최적화 단계에서 같은 내용을 코루틴으로 바꾸거나 트리거 형식으로
교체할 것이다. 지금은 그냥 만드는 데 집중하려고 한다.
이렇게 검은 원 근처에서 상호작용 키를 누르면 위 사진처럼 프린트문이 나온다.
검은 원은 스테이지 선택이기에 새로운 씬으로 이동하기만 해도 기능이 완성된다.
그래서 새로운 씬도 만들었긴 한데 아직 기능은 만들지 않았다.
우선 마을을 만든 이후에 진행할 것 같다.
또한 카메라를 플레이어에게 달아서 움직이는 대로 카메라가 플레이어를
따라갈 수 있게끔 디자인해줬다. 물론 나중에 가면 부드럽게 따라가는 코드나
포스트프로세싱 같은게 추가될수도 있겠다.
오늘은 여기까지 만들었다.
나름대로 막히지 않고 쭉쭉 개발이 진행되어서 짧은 시간에
많은 기능들을 만들 수 있었던 것 같다.
역시 이미 다뤄본 시스템 만큼은 실력이 나름대로 있는 것 같다.
다만 한가지 고민인건 자칭 "Place"마다 기능이 다를 것인데
어떻게 하나의 코드로 묶을지가 고민이다.
하나의 클래스를 만든 다음에 각 상호작용 요소마다 하위 클래스를 만들어서
묶어 놓은 다음에 실행하는 것도 나쁘지 않을 듯 하다. 다음 개발이 아마
이 부분이 될 것 같은데 C#의 자료 구조를 정확히 알지 못해서 조금 어려울 것 같다.
역시 이론적인 부분도 중요하다. 그래서 코딩 테스트를 하고 있는 것이지만 말이다.
다음 개발도 순조로웠으면 좋겠다.
'일지' 카테고리의 다른 글
소원의 섬 - 6편 (1) | 2024.09.08 |
---|---|
소원의 섬 - 5편 (2) | 2024.09.07 |
소원의 섬 - 4편 (0) | 2024.09.04 |
소원의 섬 - 2편 (0) | 2024.08.27 |
소원의 섬 - 1편 (0) | 2024.08.26 |
댓글