미션. 자연스럽게 떨어지는 오브젝트

목표


무엇을 해야 하나요?

  • 떨어지면서 속도가 점점 더 빨라집니다.
  • 바닥에 닿으면 멈춥니다. (오브젝트가 바닥에 파뭍힌 것처럼 멈춥니다.)





힌트

  • 떨어지는 속도를 변수로 만들어 점점 빨라지도록 할 수 있습니다.



먼저 아래쪽 코드를 살펴보면 'Lesson 1. 바닥까지 떨어지는 오브젝트'에 뭔가가 더 추가 된 것을 볼 수 있습니다.

물체가 자연스럽게 떨어지는 모습은 물리에서 '자유낙하'라는 이름으로 배웁니다.



위의 그림처럼 실제로 물체가 떨어질 때는 같은 속도로 떨어지는 게 아니라 점점 더 빨리, 많이 떨어지게 됩니다.

자연스럽게 떨어지도록 하려면 이 모양대로 엔트리봇이 움직이게 해 주어야 합니다.





먼저 '떨어지는속도'라는 변수를 만들고 기본값을 0으로 정해줍니다.

위 코드는 엔트리봇이 '떨어지는속도'변수 값 만큼씩 움직이도록 하는 코드입니다.

y좌표를 떨어지는속도에 저장된 값만큼 움직인 후에 떨어지는 속도를 1 더해줍니다. 처음에 저장된 값이 0이었으니 처음엔 그자리에 그대로 있을 것이고, 떨어지는 속도는 1이 되겠죠. 다음번엔 y좌표를 -1 만큼 움직입니다. (아래로 1만큼 이동하겠죠.) 그리고 떨어지는 속도는 2가 됩니다.

다음번에 실행될 땐 y좌표를 -2만큼 움직입니다. 그 다음은 -3, 그 다음은 -4 이렇게 반복문이 한 번 반복할 때마다 점점 더 많이씩 움직이게 됩니다.


떨어지다가 바닥에 닿으면 조건문 안의 코드가 실행이 안되니 멈춰있겠죠?




엔트리를 화면 아래쪽 바닥이 아니라 화면 어딘가로 옮기면 다시 떨어지기 시작할 겁니다.

엔트리가 바닥에 떨어지고 나면 '떨어지는 속도'는 바닥에 닿기 직전의 속도값이 되어있겠죠?

그래서 위 처럼 옮겨서 다시 떨어트릴 땐 떨어지는 속도를 0으로 정해준겁니다.



참고. 아래의 코드도 참고로 보세요. 위의 코드와 똑같이 동작하는 코드입니다.



더 해보기

  • 미션에 성공하면 오브젝트가 바닥에 파뭍힌 채로 멈춥니다. 
  • 왜 이렇게 되는지 이유를 생각해 보세요.
  • 어떻게하면 발바닥으로 착지하도록 할 지도 생각해 보세요.



댓글

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