1. 개요
이번 시간에는 상태이상이 걸렸을 때 이를 표기해주는 UI를 만들고, 상태이상을 실제로 걸리도록 하는 기술 부가효과를 구현하며, 교대기술까지 구현해보도록 하겠다.
또한, 입력 사이의 딜레이를 주는 것으로 연타를 방지하는 시스템을 다양한 게임에서 찾아볼 수 있는데, 이를 구현해보도록 하겠다.
2. 설계
상태이상의 경우 독, 맹독, 화상, 얼음, 수면, 마비의 6종류에 대해서만 UI로 구현된다.
또한, 한 종류의 상태이상이 걸려있는 경우 다른 상태이상은 걸리지 않는다.
혼란, 헤롱헤롱, 도발 등 다양한 상태이상이 추가적으로 존재하나, 모두 UI로 나타나지는 않는 것들이므로 나 역시 구현하지 않도록 한다.
상태이상이 걸리는 조건은 다음과 같다.
첫째. 다른 상태이상이 걸려있지 않는 상태일 것
둘째. 해당 상태이상에 면역인 타입이 아닐 것
이를 고려하면서 상태이상에 걸릴지를 판단하면 되겠다.
교대 기술의 경우 공격 후 포켓몬 교대를 진행하게 된다.
3. 구현
(1) 상태이상 UI 추가
대충 만들어본 이미지를 사용한다.
우선 새로 추가된 UI의 위치정보 수정 방식의 내용을 추가해준다.
상태이상의 여부에 따라 출력되는 UI를 변경해주기 위한 코드도 작성해준다.
(2) 상태이상 거는 기술 추가
위는 저번에 작성했던 화상 걸리게 하는 기술의 내용을 수정한 것이다.
우선, 만약 상태이상이 걸려있다면 아무런 효과가 없도록 한다.
그리고 불꽃타입은 화상 상태이상 면역이므로 아무런 효과가 없도록 한다.
그리고 90% 확률로 아무런 효과가 없도록 하게 되면, 나머지, 즉 10% 확률로 화상에 걸리도록 하면 된다.
위는 얼음 상태이상을 걸리게 하는 기술의 내용을 추가한 것이다.
마찬가지로, 상태이상이 걸려있다면 아무런 효과가 없다.
또한, 얼음타입은 얼음 상태이상 면역이므로 아무런 효과가 없도록 한다.
그리고 90% 확률로 아무런 효과가 없도록 하게 되면 나머지 10% 확률로 얼음 상태이상에 걸리게 된다.
(3) 교대기술 구현
아군이 사용했다면 공격 후 포켓몬이 수중에 돌아오게 되며, 교대를 진행하게 된다.
(4) 디테일 수정
위는 아군 공격이 끝났을 때의 BattleFlag 함수 동작인데, 'EnemyAttackDone' 변수가 새로 생긴 것을 볼 수 있을 것이다.
MyAttackDone, EnemyAttackDone을 추가하였다.
이 변수들은 bool 변수로, 동작을 원활하게 하기 위하여 새로 추가한 변수이다.
flag의 컨트롤을 하는 과정에서 오류가 발생했던 부분이 많이 있었기 때문에 이러한 버그를 수정하기 위하여 추가해주게 되었다.
(5) 입력 딜레이 구현
위와 같이 작성하게 되면, delay에 입력한 float 값동안 Input 쿨타임을 만들어주는 함수가 완성된다.
이 함수를 한 번 사용하게 되면, 다음번에 이 함수를 또 사용할 경우에 이번에 작동할 때 적용시킨 delay만큼의 시간이 지나기 전에 작동하지 않도록 하는 것이다.
4. 작동확인
다 작동이 잘 되나, 마지막 gif를 보면 알 수 있듯이 현재는 사망 후에도 상태이상이 걸리고 있다. 이를 수정하여 사망했다면 상태이상에 걸리지 않도록 할 예정이다.
+ gif 형태로 확인하기는 어렵지만 입력의 딜레이가 생긴 것 역시 확인이 가능했다.
5. 향후계획
현재 상태이상에 걸렸지만 그에 따른 부가효과는 구현을 하지 않은 상태이다. 우선 이를 먼저 구현해보도록 하자.
또한, 가방메뉴에서 아이템을 구현하는 것도 하루 빨리 구현해야한다. 다른 것보다도 체력 회복템과 상태이상 회복템을 빨리 구현할 필요가 있다. 다음 시간에는 일단 부가효과부터 빠르게 구현해보자.
'Unity 개발일기' 카테고리의 다른 글
Unity 포켓몬스터 모작(8) - 코드 구조 개편 (1) | 2024.09.23 |
---|---|
Unity 포켓몬스터 모작(7) - 턴 시작 시 상태이상 구현, 교대 및 출현 특성 구현, (1) | 2024.09.11 |
Unity 포켓몬스터 모작(5) - 배틀 시 풀죽음과 랭크변화, 반동 데미지 구현 (0) | 2024.09.06 |
Unity 포켓몬스터 모작(4) - 배틀 필트 컨트롤하기3 (2) | 2024.09.04 |
Unity 포켓몬스터 모작(4) - 배틀 필트 컨트롤하기2 (1) | 2024.09.02 |