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

올펜 플랫포머 만들기5- 중력, 점프와 장애물 인식

by 할거없네 2019. 2. 7.






















지난 번에 맵을 만드는 기능까지 추가를 했습니다.

이제 맵을 초기화 하는 기능은 잠시 없애기로 하겠습니다.

초기화 하는 블록에서 맵 데이터를 만드는 부분을 잠시 떨어뜨려 놓고

플레이어가 돌아다닐 수 있도록 맵을 꾸며주었습니다.

초록깃발을 눌러도 초기화가 안되고 맵이 그대로 유지됩니다.

이제 중력을 만들어서 캐릭터를 밑으로 떨어지게 할 것입니다.

중력이 캐릭터에게 하는 역할은 y축의 방향으로 속도를 계속 감소시키는 것입니다.

1픽셀씩 계속 감소시키도록 하겠습니다.

여기서 중력에 의한 속도 제한을 걸 필요가 있는데, 속도가 너무 빠르면 장애물 감지를 하지 못할 수 있기 때문입니다. 적당하게 -20보다 작으면 -20으로 고정하도록 하기로 했습니다.

이 블록은 메인 루프에서 캐릭터가 속도에 의해 위치가 결정되는 블록인 charater_location의 위에 놓기로 합니다.

여기까지는 중력에 의해 캐릭터가 밑으로 떨어집니다.

다음은 바닥에 닿으면 더이상 떨어지지 않고 유지하도록 합니다.

현재 자신 위치에서 이동할 곳의 블록의 값이 1이냐 0이냐를 감지하도록 할 것입니다.

예전에 만들었던 마우스에 따른 맵 블록을 감지하였던 블록에서

캐릭터의 위치+속도를 각각 넣어서 감지하도록 하면

캐릭터가 속도에 의해 움직이려고 하는 블록의 값을 확인할 수 있습니다.

맵 리스트의 해당 번호값이 1이라면 y속도를 0으로 결정합니다.

이 블록의 위치는 중력 밑에 놓기로 하였습니다.

바닥을 뚫지 않고 멈추네요.

이제 점프를 만들 차례입니다.

점프 블록을 만들어서 y속도를 10만큼 늘리기로 합니다.

점프 블록은 중력블록 위에 넣기로 하였습니다.

점프를 잘 하네요.

그러나 현재 점프를 무한히 할 수 있으므로, 횟수를 제한하는 기능을 추가하기로 합니다.


점프의 조건을 점프수 변수가 0보다 클때로 조건을 하나 더 넣고

점프 할때마다 점프수 변수를 1씩 감소시킵니다.

그리고 점프의 수를 증가시키는 것은 바닥에 닿을 때 증가시키도록 합니다.

이제 공중에서 무한이 점프하지 못합니다.

이제 좌우로 움직일 때 좌우의 바닥을 감지하는 것인데요, 다시 블록감지 부분을 추가 수정하기로 합니다.

첫번째는 y축으로 블록을 감지하는 것으로, 1이면 y축 속도가 0이며 점프수를 1로 바꿔주어 점프의 기회를 줍니다.

두번째는 x축으로 블록을 감지하는 것으로, 1이면 x축 속도가 0으로 더이상 앞으로 못가게 합니다.



여기까지 완성입니다.

다음에는 스테이지를 만들어 볼까 합니다.

스크립트 보기:

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


댓글