ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CCI - 06 - 펫 스킬 (쿨타임)
    팀업 프로젝트/C.C.I

    안녕하세요!

     

    오늘은 이 펫 스킬에 대해서 알아볼 건데요

     

    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

    댓글

김효겸 / Tel. 010-7735-0580 / E-mail. dollzzang2@hanmail.net