목차
보스 몬스터 특수 스킬 구현
오늘은 정~~말 별거 안했다.
그치만 주말에 작업해놓고 아무것도 기록 안되어있으면 나중에 놀았었나? 할 것 같아서 기록용으로 남기는 TIL...
Learn은 없는 것 같지만... 그래도 경험은 쌓였으니까!
아닌가? 경험이 Learn이기도 하다!
애니메이션 시작 확보 로직 변경
//애니메이션 트리거 발생 직후.
if (Time.time - timer < 0.1f)
{
return NodeState.Running;
}
이제껏 애니메이션 재생이 확보되었는지 확인하는 방법을 위와 같이 대충 해결하고 있었다.
0.1초가 지나면 2 프레임이 지나가니까 이 사이에 무조건 실행 되겠지! 라는 안일한 생각이었다.
(왜 2프레임이냐면 우리 애니메이션이 초당 20프레임이다.)
바꿔야지, 바꿔야지, 하는 생각이 있었는데 오늘 드디어 바꿨다.
//클래스에 추가된 메서드
private bool IsAnimationStarted(Animator animator, int animationNameHase)
{
if (AnimatorUtility.IsAnimationPlaying(animator, animationNameHase))
{
return true;
}
else
{
return false;
}
}
//활용
if (!isComebackAnimationStarted)
{
isComebackAnimationStarted = IsAnimationStarted(monster.Animator, AnimatorHash.MonsterAnimation.RumbleOfRuinComeBack);
if (isComebackAnimationStarted)
{
//3-1 애니메이션 시작이 된게 확보되면 그때 중력과 초기화.
ResetState();
monster.Rb2D.gravityScale = originalGravityScale * DOWN_GRAVITY_MULTIPLIER;
}
return NodeState.Running;
}
위와 같이 변경하여 애니메이션이 완전히 시작되면 중력을 주거나, 이동을 하거나, 하는 등의 작업을 시작할 수 있도록 하였다.
이렇게 함으로서 프레임 의존적인 로직을, 엔진의 상태 확인 API를 사용하여 프레임에 독립적인 로직을 구현하는 방법을 습득하게 되었다!
느낀점
오늘 좀 노가다 성의 잡일을 많이 했다.
하지만 레거시 코드 정리나 모듈화 작업들 또한 유지보수성과 확장성, 그리고 협업 면에서 반드시 필요한 일이라고 생각해서 미룰 수 없었다.
각 애니메이션 프레임마다 몬스터 중심이 아니라 이미지의 중심인 바람에 움직임이 조금 어색했었는데
이를 자연스럽게 고치기 위해 피봇을 변경한다거나,
기능 하나하나 하드코딩하면서 덕지덕지 추가했던 보스 특수 스킬 코드를 정리한다거나...
하지만 진행하고 나니 확실히 코드의 가독성이 좋아졌고, 나 말고 다른 팀원들이 봐도 이해가 될만해졌다.
그리고 꽤 전부터 생각했던 부분이 이번주 금요일에 얘기가 나왔었다.
우리 팀은 아트 담당이 없기 때문에 개발 기획 상관 없이 에셋을 구하거나 편집하거나 만들거나 해야했다.
그간 기획팀에게 이를 일임하고 있었다...
다들 생각치도 못했던 부분이라 부끄러웠다....
오늘 피벗 변경을 하면서도 아.. 이거 기획분들은 어떻게 관리를 해주셨대ㅠㅠ 하고 느껴지더라.
그래서 29일부터 스팀 가을 세일인데 이때 도트 찍는 Aesprite이라는 프로그램을 결제하려고 한다.
당장 이틀 뒤가 세일이라서 기다리는거지 아니었으면 오늘 바로 구매했을 듯... 이번 할인에 포함 안되면 그냥 사서 써보려고 한다.
내일 학습 할 것은 무엇인지
EffectManager에서 단 하나의 이펙트를 직접 지정해서 출력하는 경우,
기존 이펙트를 취소하지 않고도 진행할 수 있도록 코드를 변경해야겠다.
현재 코드의 문제는, 이펙트 종류를 지정해서 출력하려는 경우, 기존 재생중인 모든 이펙트들을 취소하기 때문에
effectId 103에 사운드, 카메라, UI 이펙트가 있다고 가정했을때! UI를 제외하고 사운드, 카메라를 동시에 출력할 수 있는 방법이 없다.
이렇게 지정해서 부르는 경우는 기존 재생중인 이펙트를 취소하지 않고 중첩으로 재생하되,
Summary에 필요 시 StopCurrentEffects를 호출하여 기존 이펙트를 중단할 수 있도록 정리해둬야겠다.
또한 보스 특수 스킬 2를 시작하면 될 것 같다.
'부트캠프 > 본캠프' 카테고리의 다른 글
| [내일배움캠프_2025SEP30] 빌드 QA, 발표 준비 (0) | 2025.09.30 |
|---|---|
| [내일배움캠프_2025SEP29] 유니티 디버그, OnTriggerStay2D 리팩토링 (0) | 2025.09.29 |
| [내일배움캠프_2025SEP26] UniTask 도입 (0) | 2025.09.26 |
| [내일배움캠프_2025SEP25] 코루틴 예외 처리와 자원 정리 (1) | 2025.09.25 |
| [내일배움캠프_2025SEP24] 모의면접 2차, EffectData SO 관리, 오브젝트 풀 매니저 (0) | 2025.09.24 |