Skip to content

feat: 기울기 중력 + 흔들기 임펄스 (Day 2 후반) - #9

Merged
99mini merged 1 commit into
mainfrom
claude/prd-review-work-bw0plr
Aug 17, 2026
Merged

99mini merged 1 commit into
mainfrom
claude/prd-review-work-bw0plr

Conversation

@99mini

@99mini 99mini commented Aug 17, 2026

Copy link
Copy Markdown
Owner

목표 (PRD §4.3 — 폰 자체가 컨트롤러)

  • 기울이기: 중력 벡터가 폰 기울기를 따라간다 (45°에서 최대). 글자 더미가 한쪽으로 쏟아진다.
  • 흔들기: 가속도(중력 제외)가 임계값을 넘으면 전체에 랜덤 임펄스 — 더미가 폭발하듯 흩어진다. 연속 발동 방지 쿨다운 500ms.

권한 처리 (PRD 규칙 그대로)

  • 첫 진입 시 요청하지 않는다. 글자 5개를 쌓은 뒤 상단에 "📱 기울여서 무너뜨리기" 힌트 버튼이 나타나고, 탭하면(iOS가 요구하는 사용자 제스처) 권한을 요청한다.
  • 안드로이드는 권한이 필요 없어 5개 쌓이는 순간 자동 활성화 (버튼 없음).
  • 권한이 거부되어도 나머지 기능은 전부 동작한다.

변경 내용 (파일 4개)

  • src/lib/motion.ts (신규) — deviceorientation/devicemotion 처리 + iOS 권한 플로우
  • src/lib/stage.ts — setGravity(x, y), shake() API 추가
  • src/lib/constants.ts — MOTION 상수 (기울기 감도, 흔들기 임계값·킥 세기·쿨다운)
  • src/pages/index.astro — 힌트 버튼 + 글자 수 카운트 연결

확인 방법 (실기기)

  1. 글자 5개 이상 입력 → iOS면 상단에 힌트 버튼 등장, 탭 → 권한 허용
  2. 폰을 좌우로 기울이기 → 더미가 그쪽으로 쏟아짐
  3. 폰 흔들기 → 글자들이 폭발하듯 튐
  4. 권한 거부해도 타이핑·낙하는 정상 동작

튜닝 포인트: 기울기가 둔하면 tiltFullAtDeg↓, 흔들기가 안 먹으면 shakeAccelThreshold↓, 너무 약하면 shakeKickPx↑.


Generated by Claude Code

- deviceorientation → 중력 벡터가 기울기를 따라간다 (45도에서 최대)
- devicemotion 가속도(중력 제외) 임계값 초과 시 전체 랜덤 임펄스, 쿨다운 500ms
- iOS 권한: 글자 5개 쌓은 뒤 '기울여서 무너뜨리기' 힌트 버튼 탭으로 요청
  (PRD §4.3 — 첫 진입 요청 금지, 거부해도 나머지 전부 동작)
- 모션 상수는 constants.ts 의 MOTION 에 집약

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013jzX6PJvGgLYvdvXBBRS4m
@99mini
99mini merged commit 5b87461 into main Aug 17, 2026
4 checks passed
@99mini
99mini deleted the claude/prd-review-work-bw0plr branch August 17, 2026 02:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants