미션. 점프하기

목표


무엇을 해야 하나요?

  • 바닥에 닿아있을 때, 위쪽 방향키를 누르면 점프합니다.

힌트

  • 실제로 점프를 해 보세요. (말랑말랑한 물체를 위로 던져봐도 됩니다.) 내가 또는 물체가 어떻게 움직였나요?
  • 공중에 물체를 가만히 놓으면 물체는 멈춰있다가 점점 빨라지면서 바닥으로 떨어집니다. ('자유낙하' 라고 하죠.)
  • 물체를 아래에서 던져올리면 던지는 순간에 준 힘으로 빠르게 올라가다가 공중에서 멈춘다음 자유낙하를 시작합니다.
  • '떨어지는 속도' 변수가 이 속도값을 저장하는 변수였죠?




물체를 위로 던져올리면 처음엔 빠르게 올라가면서 점점 느려지고 공중에서 잠깐 멈추게 됩니다. 그리고 우리가 앞에서 했던 자유낙하를 시작하죠.

물리에서 위로 던져올린 물체, '연직 상방 운동'이라는 이름으로 배우는 원리입니다.

우리가 만들고 싶어하는 점프도 연직 상방 운동입니다.


앞의 미션 1, 2, 3을 잘 이해했다면, 점프하기는 간단히 만들 수 있습니다. (물론 이해하는 건 간단하지는 않을 거에요.)




Lesson 3. 자연스럽게 착지하기 까지 만든 코드에 위의 코드를 더해주면 됩니다.


이 코드는 엔트리봇 오브젝트가 바닥에 닿아있을 때, 위쪽 화살표 키를 누르면 점프를 하는 코드입니다.

점프하는 기능이 두 개의 코드로 되어있죠?


떨어지는 코드에서 '떨어지는 속도' 오브젝트가 점점 커지면서 엔트리봇 오브젝트가 아래쪽 방향으로 내려왔습니다.

그 떨어지는 속도를 위쪽 방향으로 큰 값을 주면 위로 던져올린 것 같은 효과를 줄 수 있습니다.


코드가 실행되는 과정을 설명해 보겠습니다.


1. 엔트리봇 오브젝트가 바닥에 정지해 있다.

2. 화살표 키를 누르면 '떨어지는 속도'값이 -14가 된다.

3. 엔트리봇의 y좌표를 -133으로 이동시켜 엔트리봇 오브젝트가 바닥에서 떨어지게 만들어준다.

4. 엔트리봇 오브젝트가 바닥에서 떨어지면 아래 코드가 다시 실행되기 시작한다.


5. 떨어지는 속도가 -14이므로 첫 번째 블록이 실행되면 엔트리봇 오브젝트가 14만큼 위로 올라간다. 그 다음 블록에서 떨어지는 속도는 1만큼 더해져서 -13이 된다.

6. 다음번 실행에서 엔트리봇 오브젝트는 13만큼 올라가고, 속도는 -12가 된다.

7. 떨어지는 속도가 0이 될 때까지 엔트리봇 오브젝트는 위로 올라간다.

8. 떨어지는 속도가 0이 되면, 그다음은 Lesson 3에서 했던 자유낙하와 똑같은 방식으로 바닥에 닿을 때까지 떨어진다.


어떤가요? 점프의 동작이 이해가 되나요?



더 해보기

  • 던져올리는 속도값을 바꿔보면서 어떻게 동작하는지 확인해보세요.



댓글

로그인 후 댓글을 남길 수 있습니다.

댓글 1


  • 손지율, 5년 전

    이거 똑같이 따라해봤는데 안돼요....
    버그 같은 건가?



    • 토니, 5년 전

      내 오브젝트의 크기가 달라서 숫자는 내 작품에 맞게 고쳐줘야 하는 부분도 있어요. 코드안에 있는 숫자가 어떤 의미인지 생각하면서 따라해보고 숫자를 바꿔보면서 동작이 어떻게 달라지는지 확인해보세요.