🗓️ 오늘 하루 일정
✅ 오전
- 09:00 ~ 09:30 : 데일리 스크럼(AM) — 오늘 목표/이슈 공유
- 09:30 ~ 12:30 : 인풋 시스템 Run 액션 추가, PlayerConditionManager 설계(스태미나 소모/재생), TopDownMovement 연동 및 애니메이션 블렌드(걷기 0.5 / 뛰기 1.0) 적용
🍽️ 점심시간
- 13:00 ~ 14:00 : 점심시간
✅ 오후
- 14:00 ~ 16:00 : Fog of War 가시성 에이전트 페이드아웃 구현(스르륵 사라지는 처리)
- 16:00 ~ 18:00 : Spot/LOS 임계값 튜닝, 히스테리시스 구상, 런타임 테스트 및 성능 점검
🍽️ 저녁시간
- 18:00 ~ 19:00 : 저녁시간
✅ 저녁
- 19:00 ~ 19:30 : 데일리 스크럼(PM) — 진행 상황 점검, 내일 할 일 확정
- 19:30 ~ 21:00 : 스태미나/달리기 밸런싱(소모·재생 수치 조정), 페이드 타임 파라미터 보정
✅ 오늘 학습 키워드
- Unity Input System: Run 액션(Press & Hold)
- PlayerConditionManager: 스태미나 소모/재생·지연·최소치
- TopDownMovement: 걷기/뛰기 전환, 애니메이션 블렌드(0.5/1.0)
- Fog of War: 하드 토글 → 알파 보간 페이드아웃
- MaterialPropertyBlock로 _BaseColor/_Color 알파 적용
- 가시성 임계값(spot threshold)·히스테리시스로 깜빡임 방지
✅ 오늘 학습 한 내용을 나만의 언어로 정리하기
달리기 상태를 인풋(누르고 있음), 조건(스태미나 가능), **이동/애니메이션(실제 전환)**으로 나눠 책임을 분리했다. 인풋은 단순히 의도만 전달하고, 실제 달리기 여부는 CanRun(스태미나가 충분할 때)로 결정하도록 해서 버그 여지를 줄였다. 애니메이션은 걷기=0.5, 뛰기=1.0 블렌드를 기준으로 일관되게 갱신했다.
Fog of War는 “보인다/안 보인다”를 즉시 토글하던 부분을 알파 보간으로 바꿔 시각적 이질감을 해소했다. 런타임에서 머티리얼 인스턴싱을 피하려고 MaterialPropertyBlock을 사용했고, 셰이더에 _BaseColor 또는 _Color가 있는 경우에만 알파를 적용하도록 해 안전성을 높였다. 가시성 경계 근처에서 깜빡이는 현상은 임계값 + 히스테리시스로 완화 가능함을 확인했다.
🧩 학습하며 겪었던 문제점 & 에러
1) 가시성 토글이 “툭” 하고 꺼져서 위화감
- 문제 정의: 적이 시야에서 벗어나면 즉시 Renderer.enabled = false가 되어 화면에서 갑자기 사라짐.
- 내가 한 시도: 단순 토글에서 알파 보간으로 전환, 페이드 아웃 완료 시에만 렌더러 비활성.
- 해결 방법(요지):
- 새롭게 알게 된 점:
- 런타임에 머티리얼을 직접 수정하면 드로우콜 증가/메모리 낭비가 발생할 수 있어 PropertyBlock이 안전.
- 일부 셰이더는 알파 프로퍼티가 없어 투명 제어가 안 되므로, 셰이더 교체나 스프라이트 기반 대체가 필요.
- 다시 만나면: 임계값 상·하한(예: 나타남 0.02, 사라짐 0.01) 히스테리시스를 바로 적용해 깜빡임을 선제 차단.
// 목표 알파(보이면 1, 아니면 0)
targetAlpha = isVisible ? 1f : 0f;
// 페이드 속도(초 단위)
float speed = isVisible ? 1f / fadeInTime : 1f / fadeOutTime;
// 현재 알파를 서서히 이동
currentAlpha = Mathf.MoveTowards(currentAlpha, targetAlpha, speed * Time.deltaTime);
// 머테리얼에 알파 적용 (PropertyBlock)
renderer.GetPropertyBlock(mpb);
if (mat.HasProperty("_BaseColor")) mpb.SetColor("_BaseColor", baseColor.WithA(currentAlpha));
if (mat.HasProperty("_Color")) mpb.SetColor("_Color", baseColor.WithA(currentAlpha));
renderer.SetPropertyBlock(mpb);
// 완전 0일 때만 끔
renderer.enabled = currentAlpha > 0.001f;
2) 스태미나 관리가 어색해서 달리기 급정지
- 문제 정의: 스태미나가 0에 가까워질 때 달리기/걷기가 매 프레임 요동.
- 내가 한 시도: minStaminaToRun을 두어 최소치 이상이어야만 달리기 허용, 달리기 종료 후 재생 지연 추가.
- 해결 방법(요지):
- 새롭게 알게 된 점: 입력 의도와 리소스 가능 여부를 분리하면, 애니메이션과 이동 로직이 깔끔해짐.
- 다시 만나면: 체감 품질을 위해 runSpeedMultiplier, regenDelay, minStaminaToRun 세 값을 먼저 테이블로 잡고 QA.
// 조건
bool wantsToRun = input.RunHeld && moveInput.sqrMagnitude > 0f;
bool canRun = condition.Stamina > minStaminaToRun;
isRunning = wantsToRun && canRun;
// 소모/재생
if (isRunning) condition.ConsumeForRun(Time.fixedDeltaTime);
else condition.TickRegen(Time.fixedDeltaTime); // regenDelay 이후 회복
📝 메모
오늘은 플레이어 이동/스태미나/애니메이션과 포그 가시성 흐름을 “자연스럽게 보이게” 만드는 데 집중했다. 기능 자체는 간단하지만, 상태 전이의 질감(페이드, 지연, 경계값)이 체감 완성도를 크게 올린다. 내일은 히스테리시스 수치와 스태미나 재생 속도를 더 미세 조정하고, UI에 스태미나 슬라이더를 연결해 피드백을 강화하겠다.
'스파르타 코딩클럽 > TIL작성' 카테고리의 다른 글
| 내일배움캠프 60일차 TIL [최종 프로젝트 Black Chamber] (0) | 2025.09.22 |
|---|---|
| 내일배움캠프 59일차 TIL [최종 프로젝트 Black Chamber] (0) | 2025.09.19 |
| 내일배움캠프 57일차 TIL [최종 프로젝트 Black Chamber] (0) | 2025.09.17 |
| 내일배움캠프 56일차 TIL [최종 프로젝트 Black Chamber] (0) | 2025.09.16 |
| 내일배움캠프 55일차 TIL [최종 프로젝트 Black Chamber] (0) | 2025.09.15 |







