본문 바로가기
스크래치/올펜 플렛포머 만들기

올펜 플랫포머 만들기2- 좌우로 움직이기

by 할거없네 2019. 2. 7.






아무것도 없는 빈 화면부터 시작합니다.

가장 먼저 만드는 것은 무한 루프입니다.




무한루프를 먼저 하나 만들고 시작합니다.

무한루프는 오직 하나만 사용할 것이며

여기서 하나하나 기능을 넣으며 블록을 쌓아갈 겁니다.







안에 들어갈 기능이 너무 많아지면 복잡해지니

머리속으로 계산을 해서 나만의 블록으로 정리 할 수 있도록 합니다.

스크래치 3.0에서는 ‘펜’ 기능이 기본으로 되어 있지 않아서

추가해줍니다.

이걸 클릭하면,






펜 기능이 생깁니다.

이제 캐릭터를 만들어야 겠네요.

캐릭터는 점으로 표시할 예정입니다.

먼저 블록을 만듭니다.

‘화면 새로 고침없이 실행하기’를 클릭하면

단순 반복 그리기와 같은 행동을 순식간에 처리하도록 합니다.

메모 기능을 사용하여 구역표시를 할 수 있습니다.

새로운 기능을 추가할 때마다 저렇게 메모기능으로

구역을 나눌 것입니다.







메인 루프에 캐릭터 그리기를 넣고,

모두 지우기도 넣었습니다.

모두 지우기는 앞으로도 전체 스크립트에서 여기에 단 한개만 쓰일 것입니다.

캐릭터 그리기를 정의합니다.

일단 펜을 내렸다 올리는 것으로 끝내봅니다.

중앙에 점이 찍혔습니다.

너무 작기 때문에 좀 더 크게 바꿔서

하도록 하겠습니다.

중앙의 점이 캐릭터라고 하기에는

아무것도 하지 못합니다.

이제 움직이도록 바꿔보겠습니다.








캐릭터 움직이기 추가 블록을 만들고,

그리기 위에 넣었습니다.

그러면 움직이고 그리고의 순서가 되겠죠.

앞으로도 지우기는 맨 위,

그리는 것은 맨 밑부분으로,

이외의 연산과 움직임 계산등은 가운데에 위치하도록 할 것입니다.

캐릭터는 먼저 좌우로 움직이게 할 것입니다.

조건문 2개를 사용해서 왼쪽 오른쪽 조건에 따라 움직이게 합니다.

변수를 4개 만듭니다.

x, y와 속도x, 속도y입니다.

여기서 ‘이 스프라이트에서만 사용’을 체크하는데, 현재 이 변수들은 체크 하거나 안하거나 무방합니다.

저는 이 변수들이 다른 스프라이트에서 변화시킬 일이 없으므로 ‘이 스프라이트에서만 사용’을 체크하였습니다.

혹시나 변화시킬 일이 발생된다면 그때 생각해 보도록 합니다.

변수 앞에 @기호를 통하여 변수의 특성이 무엇인지 확인할 수 있도록 하였습니다.








위치와 속도에 대한 변수들을 만들었습니다.

이때 변수들이 맨 처음에 가지는 값들을 정해 놓아야 나중에 버그가 발생되지 않습니다.

초기화 블록을 만들어 주고

초기화는 메인루프 전에 수행되어

모든 변수와 리스트의 처음의 값들을 지정해 줍니다.

만약에 초기값이 정해지지 않는다면 게임을 실행할 때의 위치와 속도값이 이전에 했던 값들로 시작하는 등의 버그가 유발될 수 있습니다.

특별한 이유가 없다면 0으로 놓습니다.

나중에 캐릭터의 위치가 끝에서 시작하게 한다면

거기에 맞는 값을 초기값을 넣거나 하는 식으로 수정하여 사용합니다.

이제 캐릭터 움직이는 블록에 캐릭터가 움직이도록 변수를 바꿉니다.

좌우에 아무것도 안누르면 속도x는 0이며

좌우를 누르면 -5나 5의 값을 가지도록 하였습니다.










움직이기 관련한 마지막 블록입니다.

캐릭터의 위치를 정해주는 블록을 만들어 줍니다.

위치를 정하는 것은 오로지 ‘속도’입니다.

속도가 0이면 정지이며, 크기가 1 이상이면 움직입니다.

위치를 정하는 블록은 추후에 장애물 감지할 때 조금 더 추가됩니다.

다시 캐릭터 그리기로 가서

점을 찍어줄 좌표를 정해줍니다.

메인 루프에 쌓은 블록은 4개가 되었네요.

모두 지우기, 움직이기, 위치정하기, 그리기 입니다.

결과:




움직이기 참 잘되네요!

여기까지의 스크립트 보기:

https://scratch.mit.edu/projects/279922313/

다음에는 맵만들기+그리기 기능을 추가합니다.


댓글