일단 최대 이동 영역보다 한 칸 더 넓은 영역이 필요하다. 일단 달려가서 때릴 수 있는지를 검출 하는 게 필요하다. 그리고 기존 영역에서 레이 케스트를 쏴서 바로 옆이 적인 경우에는 턴을 종료하지 않고 공격이 가능하도록 해야겠다. 그렇다면 이전에 더블 테두리 영역의 노드를 담아둔 리스트가 필요할 듯싶다. 아니면 이게 좀 더 넓은 일종에 사정거리 노드 영역을 만들고 거기서 에너미를 검출한 다음에 에너미 옆에 이동 가능한 타일이 있는지 확인해 보는 것도 나쁘지 않은 듯싶다. 대략적으로 3 행동력을 소모해서 이동할 수 있는 영역으로 보면 될 듯싶다. 일단 이것까지 만들면 복잡하니까 이동후에 레이 케스트를 쏴서 주변 타일에 적이 있으면 공격을 할 수 있는 거를 만들어야 할 듯싶다. 그건 나중에 원거리 공격 만들 때 같이 만들면 되는 편의 기능인 듯싶다. 근접 공격을 만들고 적절한 이펙트를 넣어주는 걸로 이번 포스트를 마무리해야겠다.
일단 플레이어가 이동후에 적이 옆에 있다면 턴을 종료하지 않고 UI에 공격 아이콘이 활성화되도록 해야 할 듯싶다. 공격 모션 하고 이펙트를 멀 넣을지 고민을 해봐야 할 듯싶다. 갈라테이아를 만들기 시작한 지 대략 1년이 됐는데 겨우 이거 만들었나 이런 생각이 들기도 한다. 로그라이크풍 턴제 전략 인디 게임을 5년이나 걸려서 만들었다는 게 이해가 가긴 한다. 물론 차기작도 턴제 게임을 만들어서 노하우를 그대로 이어나가면 보다 쉽게 갈 수가 있을 듯싶다. 다음 작품은 디비니티 스타일 턴제인데 문명과 같은 4X게임을 만들고 싶다.
근데 어디에다가 코드를 넣어야 해당 기능을 구현할 수 있을지 헤매고 있다. 이게 코드 수가 천 줄이 넘어가니까 머리가 핑글 핑글 돌아가기 시작한다. 게임 매니저가 일종의 플레이어 매니저의 역할을 겸하도록 해놓은 듯싶다. 게임 매니저에 원래는 포함해야 할 에너미 AI 부분만 따로 분리해 놓은 상태인 듯싶다. 개념적으로 나눈 게 아니라 분량이 많아지 거면 분리하고 이런 식으로 만들어서 그런 듯싶다.
public void CheckVigor()
지금 플레이어 행동의 종료를 나타내는 여기에 예외 코드를 만드는데 근처에 에너미가 있으면 턴이 바로 종료가 되는게 아니라 공격할 수 있는 기회를 주고 공격이 끝났을 때 턴이 종료가 되게 해야 할 듯싶다. 그렇다면 코 루틴을 줘야 할 듯싶다. 래이케이스를 한번 돌려보고 문제없으면 바로 다음 코드를 돌리고 에너미가 있으면 일단 다음 코드를 실행하지 않고 함수를 리턴하면 될 듯싶다. 함수를 리턴하기 전에 코 루틴을 실행하고 말이다. 나중에 런엔건이라든지 이런 스킬을 만들면 여기에 원거리 공격이 가능한지 체크를 하는 것도 만들어야 할 듯싶다.
이렇게 주석을 달아놔야 나중에 잘 찾아 올듯 싶다.
아 8방향으로 쏴야 되구나. 4방향이라고 생각해서 예전 코드를 재활용하려고 했는데 그냥 새로 만들어야 될 듯싶다. 8방향 레이 케스트 쏘는 거는 유틸리티에 만들어 놓으면 다른 상황에서도 유용하게 사용할 수가 있을 듯싶다. 코드 재활용은 좋은 것이여.
전체적인 틀을 만들어 본다. 일단 잘 작동하는지 체크를 해봐야겠다.
먼가 생각했던거랑 다르게 진행된다는 느낌이다.
일단 천천히 생각해보자. 플레이어를 선택했을 때 일단 근처에 근접 타격을 할 수 있는 적이 있는지 확인을 해봐야 한다. 물론 검 관련 무기를 들고 있다면 말이다. 일단 그건 천천히 만들자.
UI를 뜨게 하는 방식으로 디버깅에 도전한다. 참고로 Color 32로 256 체계를 쓸 수가 있다.
그리고 이동후에 체크를 하면 될 듯싶다.
턴종료가 안 되는 거만 만들면 될 듯싶다. 코 루틴을 쓰려니까 버그가 생기네 그냥 행동력을 1주는 게 더 편하려나.
일단 해당 기능을 만들기 전에 만들어야 할걸 안 만들고 진행하니까 문제가 생기는 듯싶다. 행동력을 다 소모했는데 근접 공격이 가능하면 턴을 종료하지 않는 거 만드는 게 만만치 않을지 생각조차 못했다. 아 그냥 이동한 다음에 때리는 건 만들지 말아야겠다. 나중에 런앤건 만들 때 좀 고민을 해보도록 하자. 공격을 미리 정하고 가서 때리는 거다.
현재 플레이어를 선택하면 에너미를 검색을 해서 에너미 옆으로 이동이 가능한 타일이 있는 공격이 활성화되도록 해야겠다. 공격을 클릭하면 때릴 수 있는 타일을 플레이어에게 알려 준다. 이때 다른 타일을 클릭을 하지 않도록 일시적으로 막아놓고 취소를 하면 다시 돌아오도록 하게 해야겠다. 그리고 그 타일을 클릭하면 거기로 이동을 해서 공격을 하도록 하면 될 듯싶다.
캔버스를 이중으로 하니까 프로필이 떨리는 버그가 있다. 안티 앨리어싱은 그냥 나중에 그래픽 자체에 포함하는 걸로 해야겠다. 툴의 기능을 쓰는 게 아니고 말이다. 엔진 자체 기술상 캔버스가 2개면 문제가 되는 듯싶다.
정량 크기로 재단한게 깔끔하고 보기가 좋다. 이게 처음부터 어떻게 만드는지 알고 있으면 암 껏도 아닌데 모르니까 삽질하고 난리인 듯싶다.
void Start()
적과 아군을 구별해 봤다.
꺼꾸로 생각을 해서 에너미가 플레이어의 이동 영역에 들어가 있는지 판단을 하도록 한다. 저번에 이동 가능 영역 테두리 만들 때도 그렇지만 뒤집어서 생각하면 코드를 만들기 쉬워지는 경우가 많다. 에너미가 맞을 수 있다고 연락을 주면 공격 UI가 활성화되고 공격 버튼을 누르면 일반적인 타일은 클릭이 불가능해지지만 에너미를 때릴 수 있는 타일의 경우에는 노란색으로 표시가 뜨면 될 듯싶다. 물론 ESC나 오른쪽 클릭을 하면 원래 모드로 돌아오게 하는 것이 필요하다. 노란색으로 표시가 된 타일을 클릭하면 열심히 뛰어간 다음에 공격을 한다. 여기서도 공격까지 다 끝나야 턴 종료하도록 해야 할 듯싶다. 이땐 뛰어가는 건 클로우즈 없는 안 하고 공격하는걸 클로우즈업을 해야 하나. 아니면 전체적으로 클로우즈 업을 한 상태에서 때려야 하나 고민이 되긴 하다.
여튼 쉽게는 만들 수 없을 듯싶으니 천천히 하나하나 만들어 가야겠다. 일단 근접무기가 있는지 여부를 파악해야 한다. 근접무기가 없으면 굳이 이 기능을 킬 필요가 없기 때문이다.
예전에 이런 클래스를 만들어 놓았다. 이걸 활용해야 할 듯싶다. 플레이어를 클릭하면 플레이어의 무기가 어떤 형태인지 확인하는 절차가 필요한 듯싶다.
등에다 매고 다닐까 아니면 검을 들고 다니는 드론 같은 게 있으면 좋을까 모르겠다. 캐릭터가 검을 들고 다니는데 내가 다 흥분이 되는 건 먼지 모르겠다. 기술은 고도로 발전해도 인간의 본성은 원시적이다는 사이버 펑크의 명제가 문득 생각된다.
옆에 친구처럼 따라다니는게 좋을까 모르겠다. 적절한 슬로 모션도 필요할 듯싶다.
검을 쥘때는 X : 0.03, Y : 0.13 정도면 자연스럽게 검이 들어가는 듯싶다. 무기를 교체하는 모션이 좀 자연스럽지가 않아서 그냥 들고 다닐까 그런 생각이 든다. 즉 무기를 정하면 중간에 바꿀 수 없도록 하는 거다. 기타 보조무기 가령 원거리 공격 같은 경우에는 드론을 하나 추가해서 치료부터 전부 다 하도록 하면 될 듯싶다. 머 안되면 그렇게 하도록 하고 일단은 시도는 해봐야 할 듯싶다.
일단 등에찬 검을 뽑는 모션을 자연스럽게 만드는 것이 우선인 듯싶다.
공격 모션중에 골반이 넓다 보니 팔이 안쪽으로 들어가는 불상사가 있었는데 이 팔 모션 일부를 수정하면 골 반속으로 들어가지 않는다.
이런식으로 수정했다.
상대와 거리가 2칸 이상일 때 자동으로 발동되는 스킬로 대미지나 치명타라든지 이런 게 차이가 나도록 해야겠다. 치명타 확률이 차이가 나게 해야 고인물들만 알 수 있을 듯싶다. 데미지가 차이가 나면 너무 티가 나니 말이다. 근데 아무래도 아래에서 위로 치는 것보다는 위에서 아래로 치는 게 대미지가 더 나오지 않을까 싶다. 검의 무게도 있고 중력을 무시할 수 없으니 말이다.
baked로 구워두면 루트 모션을 적용하지 않아도 적용이 된다.
공격은 둘중 하나 랜덤 하게 뜨게 하면 될 듯싶다. 왠지 적에게 막타를 날릴 때는 슬로 모션을 넣으면 더 좋을 듯싶다. 슬로로 보니까 양손으로 잡을 때 제대로 잡지 못하는 경향이 있다. 그걸 좀 수정해 주어야 할 듯싶다.
믹사모에서 불러온 게 유니티에서 수정이 안된다. 머가 문제일까 모르겠다.
이때는 블렌더에서 수정하면 된다. 옆에 트렌스폼 각을 쿼터니언에서 오일러로 바꾸었더니 회전각이 고정이 되었다. 이제 새로 추가해야겠다.
믹사모에 있던 게 정확히 중앙을 타격을 안 해서 손보느라 고생했다. 이게 양손 어택인데 양손이 안 맞는 게 또 문제다 이것도 해결해야 한다. 양손을 맞추기는 힘드니까 그냥 한 손 어택으로 바꿔야 할 듯싶다. 이거 수정하느라 밥 먹으러 가는 것도 까먹어 버렸다.
'턴제제작' 카테고리의 다른 글
근접 전투 모션 (0) | 2019.02.11 |
---|---|
공격 모션 [영상] (2) | 2019.02.10 |
체력바 연동 (0) | 2019.01.31 |
체력 바 (0) | 2019.01.25 |
이동 영역 시스템 (0) | 2019.01.21 |
WRITTEN BY