ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스파르타 심화 팀과제 / 피격시 데미지 자막표현
    스파르타 게임 개발 2024. 6. 24. 01:48

    클릭형 게임을 만들고 있는데 Boss가 데미지를 입었을 시에 데미지를 띄우는 기능을 구현 해보자

     

    먼저 이거 너무 하고 싶었다. 

    이때까지 한 번도 안 해봤는데.. ㅋㅋ 

     

    어떻게 할까 생각 해보았는데, 일단 자막이 나와야 하고, 데미지로 자막이 바껴야 하고, 위로 올라가는 듯한 움직임이 있어야 하니까 

     

    그냥 순서대로 하면 됐었다. 

     

    나는 자막이 위로 올라가는 듯한 연출도 업데이트를 사용 하지 않으려고 애니메이션을 통해서 구현했다. 

    // 그런데 나중에 튜터님이 애니메이션이 오히려 더 값이 비싸다고 했다. 그리고 굳이 애니메이션이 아니라 DoTween? Tween이라는 기능을 사용 하면 애니메이션을 코드로써 구현 할 수 있다고 한다. 여기서 코드로 Transform을 움직이게 하면 순간이동식이 아니라 애니메이션처럼 움직이게 하는 거라고 한다. 

     

    아무튼 애니메이션을 통해 자막이 올라가게 했고, 그리고 데미지를 입을 때마다 자막이 나오게 해야 하는데, 우린 클릭형 게임으로써 자막이 무수히 많이 나와야 했다. 그래서 이것 또한 오브젝트 풀을 사용 했다.(자막 오브젝트가 프리펩임)

     

    이 때 주의 할 점이 오브젝트풀에서 생성을 할 때 UI Canvas 자식 오브젝트로 생성이 되게 해야 한다. 안 그러면 자막이 안 그려진다. 

     

    나는 GameManager 밑에다가 UI 하나 생성을 해두고 그것을 드래그 해서 연결 해줬다. 

    Canvas 이름 바꾼거다.

     

    이제 피격 당하면 공격력만큼 자막을 변경 하게 하고 위치 바꾸고 애니메이션 키고 셋액티브 꺼주게 하면 된다.

    이런 식으로 코드를 만들었따.

    자막 위치 변경 하게 해주고, 자막 변경하고, 애니메이션 키고, 몇 초 뒤에 자막이 꺼지게 해놓았다. 

     

    이 함수를 게임매니저에 오브젝트풀을 꺼내고, 등등 작업 하게 하는 함수를 만들어서 자막을 표시하게 했다.

    이런 느낌으로 작성했다.

    함수 이름들이 아쉽다.

     

    아무튼 이렇게 한 다음에 보스에서 데미지를 받게 하는 함수 안에 이 OnHitText 함수를 넣어줌으로써 자막이 표시 되는 걸 구현했다. 데미지 피격 자막을 쓰려면 여기 게임매니저에 들어간 함수를 쓰면 된다.

     

    생각보다 어려울 거라고 생각 했는데, 되게 간단하게 끝냈다. 골드 올라가게 하는 것도 하고 싶은데, 이 함수로 할 수 있을까. 고민해봐야겠다. 

    이제 자막 나오는 거 구현 해봤으니, 남들은 어떤 식으로 이 기능을 구현 했는지 알아 봐야겠다. 

     

    그리고 이 보스자막 나오게 하는 부분에 있어서 챌린저인 팀원분과 대화를 한 게 있는데, 아무튼 재밌었다.. 튜터님께 가서 한문철 했다. 

Designed by Tistory.