6주차 3교시 / 개인 목표 실습

움직임이 읽히는
화면을 완성하라

Idle, Move, 방향, 카메라 추적과 화면 경계를 스스로 구성하고 여덟 테스트로 완료를 증명합니다.

주황색 애니메이션 캐릭터와 청록색 추적 카메라가 불규칙한 레벨 안에서 정확히 여덟 개의 연두색 검증 지점을 확인하는 모습
GOAL은 고정되어 있습니다. 구현 순서는 선택하고, 8 TESTS로 완료를 증명합니다.

3교시의 도착점

교수자의 화면을 재현하는 것이 아니라, 자신의 장면에서 같은 품질 조건을 만족하고 재현 가능한 증거를 남깁니다.

  • 01

    Player가 멈췄을 때 Idle, 움직일 때 Move가 체감 지연 없이 전환됩니다.

  • 02

    왼쪽·오른쪽 진행 방향이 맞고, 애니메이션이 바뀌어도 몸체와 Collider가 흔들리지 않습니다.

  • 03

    Cinemachine Camera가 Dead Zone과 Damping을 가진 채 Player를 부드럽게 추적합니다.

  • 04

    레벨의 네 끝에서 화면 밖이 보이지 않으며 필수 테스트 8개를 모두 PASS합니다.

목표는 고정하고 방법은 선택합니다

아래 결과는 모두 필요합니다. Sprite부터 정리할지, Animator부터 만들지, Camera부터 추적하게 할지는 스스로 결정합니다.

실습 계약

60분 안에 기존 2D Player에 반복되는 Idle과 Move, 좌우 방향 표현을 연결하고 Dead Zone, Damping과 Confiner 2D를 갖춘 Cinemachine Camera를 구성합니다. 완료는 Console Error 0과 필수 테스트 8개의 PASS로 판단합니다.

에셋

흔들리지 않는 Sprite

시트를 Multiple로 나누고 모든 프레임의 크기, PPU와 Pivot 기준을 일관되게 맞춥니다.

클립

두 개의 반복 Clip

Player_Idle.animPlayer_Move.anim이 적절한 Samples로 자연스럽게 반복됩니다.

상태

입력에 반응하는 Animator

Speed Parameter와 양방향 Transition으로 Idle과 Move가 체감 지연 없이 바뀝니다.

방향

일치하는 진행 방향

왼쪽과 오른쪽 입력에서 Sprite가 이동 방향을 향하고 Collider2D 형태는 유지됩니다.

카메라

의도가 있는 추적 감각

작은 이동을 허용하는 Dead Zone과 부드러운 Damping이 있으며 카메라는 Player의 자식이 아닙니다.

경계

노출되지 않는 화면 밖

Confiner 2D가 레벨의 왼쪽, 오른쪽, 위와 아래 끝에서 화면 전체를 경계 안에 둡니다.

완료의 정의 “보기 좋아졌다”가 아니라, 다른 사람이 같은 조작으로 T01-T08을 다시 실행해 모두 같은 결과를 얻으면 완료입니다.

기존 동작을 보존한 복사본에서 시작합니다

애니메이션을 붙이기 전에 이동과 충돌이 정상인지 확인합니다. 새 기능 때문에 이전 기능이 망가졌는지 구분할 기준을 남깁니다.

Source5주차 완성 Scene
New SceneWeek06_AnimationCamera
Unity6.6
Start Gate이동 정상 · Error 0
File → Save As

5주차 Scene을 Week06_AnimationCamera로 저장합니다. 5주차 Scene이 없다면 작동하는 Week04_InputPhysics 복사본에서 시작합니다.

Console → Clear

Play 후 WASD와 방향키 이동, 벽 충돌이 정상이고 빨간 오류가 0개인지 먼저 확인합니다.

Package Manager

Cinemachine이 없다면 Window → Package Management → Package Manager에서 설치합니다. 설치가 끝난 뒤 메뉴가 나타나는지 확인합니다.

Assets/Week06

Sprites, Animations, Controllers 폴더로 결과를 구분합니다. 기존 에셋을 이동해 참조를 끊지 않습니다.

작업 순서를 스스로 고릅니다

아래는 클릭 순서가 아니라 중간 도착점입니다. 자신에게 가장 큰 불확실성부터 해결해도 됩니다.

권장 시간 / 순서 변경 가능

여섯 개의 중간 도착점

개인 실습

  1. 계약과 시작 상태 확인

    Scene 이름, 기존 이동, 제출 증거와 자신이 먼저 해결할 두 항목을 정합니다.

  2. 프레임 기반 준비

    Import, Slicing과 Pivot을 확인하고 Idle과 Move Clip이 Preview에서 반복되게 합니다.

  3. 상태와 방향 연결

    Animator와 Speed를 연결하고 왼쪽과 오른쪽에서 그림 방향이 맞는지 확인합니다.

  4. 카메라 감각 구성

    Tracking Target, Position Composer, Dead Zone과 Damping을 한 값씩 조절합니다.

  5. 경계와 필수 테스트

    Confiner 2D를 연결하고 T01부터 실패한 항목의 첫 원인을 좁힙니다.

  6. 증거와 종료 확인

    8 / 8 PASS, Error 0, 영상과 CSV 파일명을 확인합니다.

  1. FRAME

    Preview에서 두 Clip 반복

  2. STATE

    Speed로 Idle ↔ Move

  3. FACE

    좌우 방향 일치

  4. FOLLOW

    Dead Zone 뒤 부드러운 추적

  5. EDGE

    네 끝에서 화면 밖 0

구현 전에 필수 인터페이스를 확인합니다

에셋 이름과 세부 수치는 달라도 괜찮지만, 아래 입력, 상태와 출력의 역할 분리는 유지합니다.

INPUTmoveInput

기존 이동 의도, 정지면 0입니다.

PARAMETERSpeed / Float

입력 크기를 Animator에 전달합니다.

STATEIdle · Move

조건에 따라 반복 Clip을 선택합니다.

VIEWCinemachine Camera

Player root를 추적하고 외곽 안에 머뭅니다.

영역필수 사양통과 기준
HierarchyPlayer root에 물리, Visual 자식에 SpriteRenderer·AnimatorClip 전환 중 Collider와 root 위치가 흔들리지 않음
ClipsIdle·Move 각각 Loop Time On, Sprite Keyframe만 사용Preview와 Play Mode에서 끊김 없이 반복
AnimatorSpeed Float, 양방향 Transition, Has Exit Time Off입력 시작·종료 후 0.2초 안에 상태 변경
Facing수평 입력이 0이 아닐 때만 마지막 좌우 방향 갱신멈춰도 마지막 방향 유지, Collider 변화 없음
FollowPlayer root Tracking Target, Position Composer 사용작은 이동은 허용하고 범위를 벗어나면 부드럽게 추적
BoundaryPolygonCollider2D와 Confiner 2D 연결Game View의 네 화면 가장자리가 레벨 밖을 보이지 않음

필수 테스트 8개로 완료를 증명합니다

각 테스트는 한 조건만 바꿉니다. 기대 결과와 실제 결과를 비교하고, FAIL이면 처음 보인 현상과 바꾼 한 가지를 기록합니다.

Required tests0 / 8 PASS
ID조작과 조건기대 결과판정관찰과 수정 기록
T01Play 후 2초 동안 입력하지 않음Idle Clip이 반복되고 Player·Visual 위치가 흔들리지 않음
T02D 또는 오른쪽 방향키를 누름0.2초 안에 Move로 전환되고 이동 중 반복 재생
T03Move 중 모든 이동키를 놓음0.2초 안에 Idle로 돌아오고 마지막 방향을 유지
T04A와 D를 번갈아 입력Sprite가 매번 진행 방향을 향하고 Collider2D 모양은 유지
T05상하좌우와 대각선 이동, 벽 충돌을 반복Animation 전환 중에도 Visual이 튀지 않고 이동과 충돌이 이전과 같음
T06화면 중앙에서 Dead Zone 안만큼 짧게 이동Player는 움직이지만 카메라 프레임은 움직이지 않음
T07한 방향으로 계속 이동해 Dead Zone을 벗어남카메라가 갑자기 붙거나 떨리지 않고 일정한 Damping으로 추적
T08레벨의 왼쪽, 오른쪽, 위와 아래 끝에 차례로 도달네 위치 모두 Game View에 레벨 밖 배경이 한 줄도 드러나지 않음
T09 선택Game View를 16:9와 4:3으로 바꿔 네 끝 확인두 화면 비율에서도 카메라 경계가 안정적으로 유지됨

입력한 결과는 이 브라우저에 자동 저장됩니다.

FAIL은 보이는 신호를 따라 좁힙니다

코드와 Inspector를 동시에 바꾸지 않습니다. 왼쪽부터 확인해 처음 끊긴 단계에서 한 가지만 수정합니다.

SPRITESCLIPSSPEEDSTATEFOLLOWBOUNDARY
Clip Preview부터 흔들립니다

관찰: 각 Sprite의 Rect와 Pivot 표시를 비교합니다. 한 가지 수정: 모든 프레임의 Pivot을 같은 발 중심으로 맞춘 뒤 Apply합니다. Rigidbody2D나 Camera 값은 아직 바꾸지 않습니다.

두 Clip은 정상인데 상태가 바뀌지 않습니다

Play 중 Animator 창의 Speed 값을 봅니다. 0에서 변하지 않으면 Animator 참조와 SetFloat를, 값이 변하면 Condition, Parameter 철자와 Transition 방향을 확인합니다.

상태 전환이 늦습니다

Has Exit Time을 끄고 Transition Duration을 0에 가깝게 낮춥니다. 두 값을 동시에 바꾸었다면 하나를 되돌리고 어떤 설정이 지연을 만들었는지 기록합니다.

왼쪽에서 Player 전체가 뒤집힙니다

Player root의 Scale X를 확인합니다. 음수로 바꾸지 말고 Visual의 SpriteRenderer에 flipX를 적용합니다. Scene View에서 Collider Gizmo가 변하지 않는지 봅니다.

Camera가 너무 붙거나 늦게 따라옵니다

먼저 Dead Zone만 조절해 “언제 움직일지”를 맞춥니다. 그다음 Damping만 조절해 “얼마나 빨리 따라갈지”를 맞춥니다. Camera가 Player 자식이면 먼저 분리합니다.

한쪽 끝에서만 화면 밖이 보입니다

Game View를 유지한 채 PolygonCollider2D의 해당 쪽 꼭짓점과 Orthographic Size를 비교합니다. Bounding Shape 연결이 맞다면 경계가 화면 반쪽 크기만큼 안쪽에서 멈추는 것이 정상입니다.

코드가 컴파일되지 않습니다

Console의 가장 위 첫 빨간 오류 하나만 읽습니다. 오류 파일과 줄, 괄호, animatorspriteRenderer 필드 선언, Parameter ID 철자를 순서대로 확인합니다.

AI 사용 범위 MCP와 Ask로 오류 문구, 기존 코드와 Inspector 속성의 의미를 물을 수 있습니다. Generator는 이번 실습에서 사용하지 않습니다. 설명하지 못하는 코드는 제출물에 남기지 않습니다.

정지 화면이 아닌 동작 증거를 남깁니다

Animation과 Camera는 시간에 따른 변화이므로 영상이 필요합니다. 에셋 구조와 테스트 기록을 함께 제출해 다시 확인할 수 있게 합니다.

Scene

Week06_AnimationCamera.unity

Player, Visual, Cinemachine Camera와 CameraBounds가 연결된 재실행 가능한 Scene입니다.

Animation

Player_Idle.anim, Player_Move.anim

두 Clip과 이를 연결한 Animator Controller를 함께 제출합니다.

Video

week06_학번_이름_demo.mp4

15-25초 안에 Idle → Move → Idle, 좌우 방향, Camera follow와 한 경계 도달을 끊지 않고 보여 줍니다.

Test log

week06_학번_이름_test.csv

이 페이지에서 저장한 T01-T08 판정, 관찰과 수정 기록입니다.

최종 확인

종료 전 8개 확인

0 / 8 완료

체크 결과는 이 브라우저에 저장됩니다.

자신의 선택을 세 문장으로 설명합니다

수치 자체보다 그 수치가 만든 결과를 말합니다. 자신의 Game View를 가리키며 빈칸을 채웁니다.

상태

내 Animator는 Speed가 ______일 때 Idle, ______일 때 Move를 재생합니다.

추적 감각

Dead Zone은 ______만큼의 작은 이동을 허용하고, Damping ______은 카메라를 ______하게 느끼게 합니다.

화면 경계

CameraBounds는 ______ 모양이며, 네 끝에서 화면의 ______가 레벨 밖으로 나가지 않습니다.

실습 중 확인할 공식 자료

메뉴나 속성이 다르게 보일 때에는 검색 결과보다 현재 버전의 Unity와 Cinemachine 공식 문서를 먼저 확인합니다.