스킬 구조 원리

YongSeok·2022년 10월 6일
0

  • 스킬을 발동시키는 순간 SetSkillCool(index, currentSkill.coolDown); 함수가 발동된다.
  • 이때 index 의 값은 내가 누른 스킬번호의 index 값이며 (이번 경우 모두 동일하게 키보드 1번을 눌러서 내가 가지고 있는 2번째스킬인 맹렬한돌진[대시]을 사용하였다고 가정하겠음)
  • currentSkill 의 경우 SkillBase 클래스에서 설정한 맹렬한 돌진 스킬의 coolDown값 즉 float 3 이 매게변수로 들어갈 것이다




  • UseSkill함수에서 매개변수 (index = 1, wantCoolTime = 3) 을 가지고 SetSkillCool 함수를 실행할 것이다
  • 만약 index가 0 보다 작거나 내가가진 스킬의 개수보다 높은 값이 index로 들어올경우 (버그방지) return 을해주며
  • skillCoolList.Count(0) 값이 현재 index(1) 보다 크거나 같아질때까지 skillCoolList.Add(0); 을 해준다
    • 여기서 skillCoolList 란❓❓☝같은 스크립트 내에 float 형식의 List로 선언해두었다.
  • 즉 처음 skillCoolList 는 0이니까 skillCoolList.Add(0); 를 해주면 skillCoolList가 1이 되고 index보다 크거나 같아야하기때문에 한번더 skillCoolList.Add(0); 해줘서 키보드 2번을눌러 index 1번스킬인 맹렬한돌진을 실행할 경우 두개의 skillCoolList.Add(0); 가 List에 들어가게 된다
  • 그후 return 해주는 값은 wantCoolTime (현재 3) 이기에 skillCoolList[1] = 3; 을 return해주는 결과를 갖게된다




  • 키보드 2번을 누른 현재 skillCoolList[1] = 3 이라는 결과를 갖게 되었고 skillCoolList.Count = 1일 것이다.
  • 업데이트에서 계속 실행되는 조건으로 스킬이 들어왔으면 시간을 깍아주어 사실상 쿨타임을 다시 0으로 만들어주는 기능을 하는 조건문이 발동될것이다



  • 지금부터는 스킬쿨타임이 돌아가고있는 모습을 UI로 나타내는 기능을 설명한다

  • fillAmount에 GetSkillPercent(index)값을 계속 Update 해주겠다는 의미이다

  • GetSkillPercent함수란❓❓

  • 위와 같이 GetSkillCool 에서는 skillCoolList[index] 값을 반환해주고 있다 그말은 즉, 맹렬한돌진을 사용했을때 3초에서 0초로 계속 깍이고있는 쿨타임시간을 GetSkillCool이 실시간으로 가지고 있을것이다

  • 그리하여 (계속깍이는 내쿨타임 / 스킬쿨타임) 의 값이 언젠가는 0이 될꺼고 0이 되기까지의 과정이 fillAmount 값에 들어가서 쿨타임이 계속 돌고있는 UI가 보여질것이다!

0개의 댓글