1/6 작업내용 :
1. 닌자, 격투가, 성직자 등 스킬 이펙트 및 스킬 로직 구현 진행중
닌자의 순간이동 스킬, 기사의 도발, 격투가, 성직자의 스킬 이펙트, 궁수의 화살 발사체 구현 및 출력 등 챔피언들의 스킬 로직과 이펙트 작업을 진행했다. 10개의 챔피언의 개성있는 스킬들을 각자 구현하기 위해 부모 클래스 Champion이 아닌 각자의 챔피언 클래스에서 정의해주다 보니 생각할게 많았다. 예를 들면 기사의 스킬은 도발을 사용하는 스킬로, 사용즉시 적 챔피언 중 랜덤 챔피언의 공격대상을 강제로 자신으로 바꾼다. 닌자의 스킬은 연막탄을 사용하여 target의 위치로 순보하는 스킬이다.
SKILL_R, SKILL_L 타입의 애니메이션의 EndEvent로 Teleport라는 함수를 호출시켜, 위치값을 바로 타겟의 위치로 옮겨주고, 그다음 바로 SKILLMOVE_R, SKILLMOVE_L이라는 순보 이후의 애니메이션을 출력시켜주도록 구현했다.
근접 챔피언 같은 경우는 따로 ImageRect형태의 skill이펙트를 출력하기보다는 캐릭터의 스프라이트 시트의 스킬 공격 부분에 합쳐주는 작업을 했고, 그이외의 원거리 캐릭이나, 닌자와 같이 순간이동을 하는 경우의 스킬은 따로 skill이펙트의 ImageRect를 Active해주는 방식으로 구현했다.
스프라이트 시트에 합친 이펙트를 제외한 스킬 이펙트는 Singleton을 상속받은 EffectManager를 통해 미리 등록시켜두고 원하는 타이밍에 출력하게끔 구현했다.
2. 챔피언이 근접해오면 일정한 안전거리 유지하도록 후퇴 구현
만약 공격 범위 내에 타겟이 들어오고, 타겟과 나의 거리가 공격범위의 절반보다 작아질때 State에 AVOID값을 줌으로써 Avoid함수를 호출시켰다. direction은 pos에서 적 대상의 pos값을 뺌으로써 적의 공격방향을 가져와 방향으로 설정하고 정규화된 값을 velocity로 줌으로써 적이 오는 반대방향으로 도망가도록 구현했다.
또한 도망갔을때의 velocity의 방향에 따라 해당 챔피언의 공격방향도 반대로 구현했다. ( 기존 attack할때와 같은 로직으로 구현하면 오른쪽으로 도망가면서 오른쪽을 보고 쏘기때문에, bool값을 기존 로직의 반대로 줘야한다 )
3. 챔피언이 아레나 밖으로 나가지 못하도록 충돌처리 구현
경기장 밖으로 나가지 못하도록 충돌 처리를 구현했다.
4. 발사체 구현
원거리 챔피언들을 위한 발사체 PoolingManager를 만들었다. ( 현재까지는 Arrow만 만듬 )
미리 키값을 통해 Object를 만들고, 필요할때 key값과 발사체의 발사 시작 위치인 start, 도착 위치인 destination, 그리고 발사 당시의 공격 방향을 전달받아 발사하도록 구현하였다.
API에서는 이미지 회전이 어렵기 때문에, 미리 8방향의 화살 텍스쳐를 만들어 둔 다음, 날아가는 direction 방향에 맞게 텍스쳐를 할당하여 출력하도록 구현했다.
닌자와 같이 순보를 써서 아쳐와 위치 값이 겹치게 될 경우 아쳐가 화살을 발사하면 direction이 x,y값 전부 0이 나올때는 매개변수로 받은 AttackDirection을 통해 방향에 맞게 다시 텍스쳐를 할당했다.
5. HealText 구현
어제 구현했던 DamageText와 같은 로직으로 HealText도 구현했다.
6. 게임 시간 0 되면 경기 끝나도록 구현
게임 시간 총 60초동안 게임이 진행되고 시간이 0이 되면 모든 챔피언이 활동을 정지하도록 구현했다. 시간이 지나면 bool값인 isFinish를 true로 바꿔주고, 모든 챔피언의 타겟을 nullptr로 바꿔줬다. isFinish가 true라면 타겟을 타게팅하는 함수에 들어가지 못하게 하고 더이상 챔피언들의 State를 정하지 못하게 구현했다.
이후에 게임이 끝난 후 킬스코어 합산을 통해 승패를 가르도록 구현할 예정이다.
힘들었던 점 :
모두 공통된 스킬이 아닌 각자 다른 컨셉과 로직의 스킬들을 구현해야 하다보니, 한 챔피언의 스킬을 구현하는데에도 많은 생각을 하게 됐다. 많은 어려움을 느꼈지만 닌자의 순보같은 경우 만들고나서 테스트했을 때 내가 생각한대로 100% 구현되어 내 노력에 대해 성취감을 느꼈다.
작업 예정 :
- 남은 스킬 이펙트 및 스킬 로직 작업 마저 진행
- 아레나 씬, 전투 장면에서 양쪽 진영의 캐릭터카드를 출력시켜, 각 챔피언의 KDA와 누적딜량, 누적 피해량, 누적 힐량을 출력하도록 구현 예정
- 게임이 끝났을때 킬스코어 합산을 통해 승패를 가르도록 구현 예정
'WINAPI > API 게임' 카테고리의 다른 글
팀파이트 매니저 모작 소개영상 (0) | 2023.01.09 |
---|---|
230108 팀파이트 매니저 모작 - 7 (0) | 2023.01.09 |
230105 팀파이트 매니저 모작 - 5 (1) | 2023.01.06 |
230104 팀파이트 매니저 모작 - 4 (1) | 2023.01.05 |
230103 팀파이트 매니저 모작 - 3 (0) | 2023.01.03 |