-
안녕하세요!
오늘은 이 펫 스킬에 대해서 알아볼 건데요
2~3개 정도 플레이어에게 도움을 주는 스킬을 계획했지만
현재는 1개밖에 못 만들었습니다.
이 스킬에 간략히 설명을 드리자면.
이 스킬을 사용하게 되면 플레이어의 일정 범위 안에 있는 적 은
일정 시간 동안 "정지"를 하게 됩니다.
이후 일정 시간이 끝나면 다시 원 상태로 돌아오게 됩니다.
다른 버튼과 다르게 쿨타임 이 적용된 모습을 시각화로 보여 주었으며
이미지 타입의 Filled를 이용하여 조절을 해 주었습니다.
총 두 겹으로
뒤에는 일반 이미지로 BackGround를 표현해 주었으며
앞의 이미지는 Button으로 쿨타임 적용 모습을 보며
터치/클릭 시 상호작용이 가능하게 만들어 주었습니다.
FoxSkill 스크립트입니다.
coolDown : 0부터 값을 누적시킬 변수입니다.
coolTime : 실질적인 쿨타임은 이 값입니다.
waitTime : Invoke 함수를 기다렸다 실행시켜줄 시간입니다.
cdImg : 받아올 이미지입니다.
cool : cool 중인지 체크할 불 변수입니다.
foxFsm : FoxFSM스크립트를 받아올 변수입니다.
foxAttackFoot : 스킬 사용 시 발생할 이펙트입니다.
Start함수에서 foxFsm에게 제어할 FoxFSM을 받아와 할당해 주었으며.
스킬 버튼의 OnClick으로 실행될 public으로 선언한 함수 OnClickBtn01 함수를 보겠습니다.
중복 방지를 위해! cool (cool == false) 라면의 조건을 걸어주었으며
바로 cool = true로 바꿔주었습니다
(중복 방지)
이후 StrtCorutine으로 코 루틴 함수 "CoolDown"을 실행시켜주는 모습이며
foxFsm에 접근하여 FoxSkill01(스킬 애니메이션)을 실행시켜주는 모습입니다.
이후 Invoke를 이용해 "AttackFoot"함수를 waitTime 이후 실행시켜 주어서
원하는 애니메이션 모션에 맞춰서 이펙트가 켜지게 설정을 해주었습니다.
(주석 처리는 스킬이 실행됐을 시 보기 위한 코드였습니다.)
코 루틴 함수 CoolDown 부터 보겠습니다.
이 코루틴 함수에서는
초기에 cooldown을 0부터 시작해 줍니다.
(스킬 쿨타임은 0부터 시작되기 때문입니다.)
이후 while문을 통하여 cooldown에 +=연산자를 이용해
Time.deltaTime * 1 (1초씩 누적) 누적시켜 주었으며
cdImg(버튼 이미지)의 fillAmount를 cooldown / coolTime의 값으로
0.0f ~ 1.0f의 값을 가지게 해 주었으며 동기화를 시켜 주었습니다.
만일 cooldown이 coolTime보다 크거나 두 값이 같다면
fillAmount는 0.0 -> 1.0f 이 된 것을 의미하게 됩니다.
이후 스킬을 다시 사용할 수 있게 cool = false로 바꿔 주었으며
현재 코 루틴 은 StopCorutine를 이용해 스톱시켜주는 모습입니다.
OnClickBtn01함수에서 Invoke로 실행되는 함수입니다.
간단히 펫에 붙어 있는 이펙트를 SetActive를 이용해 true로 바꿔 주었으며
이 생성된 이펙트 오브젝트는
자체적으로 비활성화시켜주는 스크립트를 만들어
인스펙터 창에서 시간을 조절해 비활성화되게 해 주었습니다.
(스킬 사용 시 활성화되는 이펙트 오브젝트에 1초의 시간 후 비활성화되게 해주는 DisableObj를 입힌 모습)
이후
foxFsm.GetComponent <FoxColExtract>(). FoxColExtract_()
의 코드는 적들의 콜라이더를 추출하여, 그 콜라이더들의 컴포넌트에 접근해
제어를 해주는 방식인데, 이 코드는 다음 글에서 적 과 함께 스킬 사용 효과를 같이 살펴보도록 하겠습니다.
00 : 20초 감사합니다.
'팀업 프로젝트 > C.C.I' 카테고리의 다른 글
CCI - 08 - 플레이어 피격모션 (0) 2022.05.14 CCI - 07 - 적 & 펫 스킬 적용 (0) 2022.05.13 CCI - 05 - 펫!! (0) 2022.05.13 CCI - 04 - Hp (0) 2022.05.13 CCI - 03 - 버튼 & Mini Map (UI) (0) 2022.05.12