Season 01 - 09 속도! 가속! 감속! 움직임의 물리!

Season 01 - 09 속도! 가속! 감속! 움직임의 물리!

⚡ Season 01 - 09 속도! 가속! 감속! 움직임의 물리!

“멈추지마! 더 빨리! 근데 너무 빠르면… 무서워!”

코딩스타랩 교실. 어제 벽에 박은 충돌 실험이 너무 즐거웠던 딕은 오늘도 시작부터 소리쳤다.
“리오오온! 오늘은 더 빠르게 달리자!! 속도 맥스까지 가보자!!”

세이는 깊은 한숨을 쉬었다.
“딕… 너는 속도가 아니라 사고가 맥스야…”

리온은 이미 칠판 앞에 서 있었다.
오늘은 속도(speed)와 가속(acceleration), 그리고 감속(deceleration)이 주제였다. 그는 칠판 위에 단 한 단어를 크게 적었다.

velocity (속도)

딕은 눈이 번쩍였다.
“이거 게임에서 본 단어다! 무조건 신나는 거야!”

세이는 조용히 덧붙였다.
“속도… 마음에도 있는 거야. 너무 빠르면 무서워지고, 너무 느리면 답답하고.”

리온은 고개를 끄덕였다.
“그래. 게임 속 속도도 똑같아. 그래서 조절이 필요하지.”


🚀 1. 속도 = 위치 변화량

리온은 칠판에 숫자를 적었다.


let x = 0;
let speed = 5;  // 속도

x = x + speed;

세이: “속도는… 위치가 얼마나 빨리 바뀌는지?”

리온: “맞아. speed가 크면 한 번에 더 많이 움직이지.”

딕: “그럼 speed를 100으로 올리면…?”

리온은 잠시 딕을 바라보았다.
“…너는 왜 항상 위험한 걸 먼저 생각하니?”

딕은 어깨를 으쓱했다.
“재밌잖아!!!”



🔥 2. 가속 = 속도를 더하는 힘

“그럼 이제 진짜 재미있는 걸 하자.” 리온은 두 번째 코드를 적었다.


let x = 0;
let speed = 0;
let accel = 2; // 가속

document.addEventListener("keydown", () => {
  speed = speed + accel;
  x = x + speed;
});

딕이 어깨를 들썩였다.
“속도에 속도를 더하면…?!”

세이는 조용히 말했다.
“…엄청 빨라지겠네?”

리온: “맞아. 이게 바로 가속(acceleration)이지.”

딕은 키를 눌렀다.
파란 박스가 갑자기 “쓱— 슝— 슈슈슈슉—!” 속도로 넘어갔다.

딕: “우와와와아!! 미쳤다!! 이거 완전 롤러코스터잖아!!”

세이: “딕… 조심해… 화면 밖으로 또 튀어나간다…”

딕: “그럼 잡아줘어어어어!!”


⛔ 3. 감속 = 브레이크

딕의 광적인 속도 실험을 막기 위해 리온은 세 번째 공식을 적었다.


if (speed > 0) {
  speed = speed - 1; // 감속
}

세이: “속도가 조금씩 줄어들어…”

리온: “그래. 브레이크를 걸어주는 거지. 게임에서는 감속이 없으면… 제어가 안 돼.”

딕은 감속된 박스를 보며 말했다.
“근데… 감속도 좀 슬프다. 점점 느려지고 멈추고…”

세이는 미소 지었다.
“멈춘다고 끝나는 건 아니야. 다시 달릴 수 있잖아.”

딕은 금세 다시 기운을 차렸다.
“그럼 다시 달릴래!!!!!!”



🌪 4. 마찰(friction) = 자연 감속

리온은 조금 더 전문적인 개념을 꺼냈다.


speed = speed * 0.9;  // 마찰

세이는 눈을 크게 떴다.
“속도가 자연스럽게 줄어들어…?”

리온: “그래. 현실 세계에서 물체가 굴러가면 조금씩 속도가 줄어드는 것처럼.”

딕은 고개를 끄덕였다.
“오… 이제 좀 ‘진짜 게임’ 같다!”

리온: “맞아. 움직임이 자연스러워지면 게임의 몰입도가 올라가.”


🏃 5. 속도 + 경계 + 충돌 = 진짜 움직임

모든 개념을 합친 최종 코드가 칠판에 등장했다.


let x = 0;
let speed = 0;
let accel = 2;

document.addEventListener("keydown", () => {
  speed += accel;       // 가속
});

function move() {
  speed = speed * 0.9;  // 마찰
  x = x + speed;        // 이동

  if (x < 0) x = 0;     // 경계
  if (x > 400) x = 400;

  box.style.left = x + "px";
  requestAnimationFrame(move);
}

move();

딕은 감탄했다.
“와… 이제 진짜 살아있는 것 같아!”

세이는 화면을 바라보며 말했다.
“속도도 감정 같아… 올랐다가, 줄어들고… 다시 오르고.”

리온은 조용히 말했다.
“맞아. 그래서 게임의 움직임이 사람 마음을 닮을 때 더 재밌어지는 거야.”



🎯 오늘의 배움

  • 속도(speed) = 위치가 변하는 양
  • 가속(acceleration) = 속도를 증가시키는 힘
  • 감속(deceleration) = 속도를 줄이는 힘
  • 마찰(friction) = 자연스러운 감속
  • 속도 + 경계 + 이벤트 → 움직임의 완성

딕은 여전히 화면 속 파란 박스를 보며 말했다.
“아… 달리고 싶다… 나도.”

세이는 웃으며 말했다.
“너는 이미 달리고 있어.”

리온은 다음 칸에 새로운 문장을 적었다.
“Season 01 - 10 중력(Gravity)! 점프(Jump)! 떨어짐(Fall)!”

딕: “점프!!! 드디어 점프!!!!!”

세이: “딕… 아직 시작도 안 했어.”

리온: “그럼 시작하자. 다음 시간엔… 우리가 하늘로 뜬다.”


🌍 English Summary (≈500 words)

Season 01 - 09: “Speed, Acceleration, and the Physics of Movement!”
In this episode, the kids explore core game physics: speed, acceleration, deceleration, and friction. Dick becomes obsessed with speed, pushing the object to extreme levels, while Sei observes how movement resembles emotional flow — rising, falling, slowing down. Leon explains how velocity works, how acceleration adds force, and why friction and deceleration are necessary for control. They build a fully functional movement system combining boundaries, velocity updates, and natural slowing. This marks their first step into real “game physics,” setting the stage for gravity and jumping next. MAKE · PLAY · DREAM.


© 2025 CodingStar Lab | MAKE · PLAY · DREAM | by endic

#코딩스타랩 #속도 #가속 #감속 #마찰 #게임물리 #초등코딩 #중등코딩 #리온세이딕 #velocity #javascript기초

댓글 없음

Powered by Blogger.