2.7 KiB
2.7 KiB
40. UI Update Summary (Risky Attack Visual Effects)
39번 (Luck System) 이후 작업된 UI 및 시각 효과 관련 변경 사항 정리입니다.
1. Attack Animation & Visual Effects
공격 유형(Risk Level)에 따라 차별화된 애니메이션과 시각 효과를 구현했습니다.
BattleAnimationWidget (lib/widgets/battle/battle_animation_widget.dart)
animateAttack 메서드가 RiskLevel을 인자로 받아 각기 다른 동작을 수행합니다.
- Safe Attack:
- 동작: 제자리에서 좌우로 살짝 흔들리는(Wobble) 애니메이션.
- 느낌: 신중함, 머뭇거림.
- 구현:
Curves.elasticIn을 사용한 짧은 X축 이동 (200ms).
- Normal Attack:
- 동작: 적에게 다가가서 가볍게 부딪히는(Dash) 애니메이션.
- 느낌: 일반적인 타격.
- 구현: 확대(Scale Up) 없이
Curves.easeOutQuad로 이동 후 복귀 (400ms).
- Risky Attack:
- 동작: 몸을 크게 부풀린 후(Scale Up) 강하게 돌진(Heavy Dash).
- 느낌: 강력한 한 방, 높은 리스크.
- 구현: 1.2배 확대(600ms) ->
Curves.easeInExpo가속 돌진(500ms) -> 타격 -> 복귀.
ExplosionWidget (lib/widgets/battle/explosion_widget.dart) [NEW]
- 기능: 타격 지점에서 파편(Particle)이 사방으로 튀는 효과.
- 구현:
CustomPainter를 사용하여 다수의 파티클을 효율적으로 렌더링. - 트리거: Risky Attack 적중 시에만 발동.
ShakeWidget (lib/widgets/battle/shake_widget.dart)
- 기능: 화면(또는 위젯)을 흔드는 효과.
- 적용: Risky Attack 타격 시에만 발동.
2. BattleScreen Integration (lib/screens/battle_screen.dart)
BattleAnimationWidget,ExplosionWidget,ShakeWidget을 조합하여 전투 연출 구성._addFloatingEffect에서 공격 이벤트 수신 시RiskLevel에 따라 적절한 애니메이션 메서드 호출.- Risky Attack의 경우:
Scale Up->Dash->Impact(Shake + Explosion) ->Return의 시퀀스로 동작. - Timing Sync: 데미지 텍스트 표시 타이밍을 애니메이션 타격 시점(Safe: 200ms, Normal: 400ms, Risky: 1100ms)에 맞게 조정.
- Icon-Only Animation: 공격 시 전체 카드가 아닌 캐릭터 아이콘만 적에게 날아가도록 변경.
- Hide Stats: 공격 애니메이션 진행 중에는 HP, Armor 등 스탯 정보를 숨겨 시각적 혼란 방지.
3. 기타 UI 개선
- Floating Effects: 데미지 텍스트 및 이펙트 아이콘 위치 조정.
- Risk Level Selection: 다이얼로그 UI 개선.
- CharacterStatusCard: 애니메이션 키(
animationKey)와 스탯 숨김(hideStats) 속성 추가.