본문 바로가기
스크래치/스크래치 런

쿠키런 같은 게임 만들기 1. 기본 캐릭터 만들기

by 할거없네 2017. 12. 4.

안녕하세요. 승승이 입니다.

이번에 만들 프로젝트는 '쿠키런 같은 게임 만들기'입니다. 만들고자 하는 게임의 유형은 장애물을 회피하고, 아이템을 먹으면서 달리는 게임류입니다.


해당 프로젝트를 만들면 이런 모습이 될 것입니다.




이것도 일종의 미니게임으로 하드코어하게 만들거나 해도 될 거 같네요. 게임을 만들기 전에 어떻게 만들지 정리해봅니다.


1. 캐릭터- 캐릭터는 아이템을 먹거나 장애물을 피할 수 있어야 합니다. 점프와 지면의 인식이 핵심적인 부분입니다.

2. 장애물- 장애물이 캐릭터에 닿으면 게임이 끝납니다. 돌이나 가시같은 장애물과 웅덩이와 같은 낙사용 장애물, 새와 같이 공중에 있는 장애물로 3가지정도가 있습니다.

3. 아이템- 아이템은 기본적으로 동전과 같이 점수 획득용이 있고, 속도가 빨라지거나 무적모드와 같은 기능적인 아이템으로 나눌 수 있겠습니다.

4. 지형 생성- 장애물과 아이템을 만들었으면 이것을 토대로 지형을 만들어 주어야 합니다. 간단하게 만들 예정이기에 복잡한 지형은 만들지 않을 예정입니다.

이제 만들 것을 정했으면 순서대로 하나하나 만들어 볼까 합니다. 가장 먼저 캐릭터를 만드는데, 기본적으로 점프만 하도록 하면 됩니다.


1. 점프가 가능한 캐릭터 만들기

스프라이트는 일단 고양이를 가지고 만들 것입니다. 고양이가 모험을 하면서 다가오는 함정을 피해 돈을 모으는 게임이 되겠습니다.


움직이는 스크립트는 매우 간단합니다.

가장 먼저 초기값을 정해주는 user_init에서 필요한 변수나 상황들의 초기값을 넣어줍니다.

동작하는 순서를 대략적으로 말하면, 무한루프 속에서 현재의 어떤 상태냐에 따라서 하나하나 행동을 취해줍니다.

1. 사용자가 키보드 입력에 따라서 점프를 하도록 만들어 줍니다.

2. 점프의 입력이 정상적으로 입력되면, 점프 모션을 만들어 줍니다.

3. 점프하는동안 땅으로 떨어지도록 합니다.

4. 점프 완료후에 땅에 착지할 수 있도록 합니다.

이와 같은 반복동작을 하는 것이 기본 캐릭터의 특징입니다.

세부적으로 변수나 블록들에 대한 설명은 아래와 같습니다.


블록:

user_init이 블록은 고양이 스프라이트에서 가장 먼저 여러가지 변수나 기타 등등에 대해서 초기값을 부여할 때 필요한 블록입니다현재 짠 스크립트에서는 단순히 크기와 위치그리고 @state라는 변수를 0으로 시작하도록 만들어 주었습니다.

user_jump고양이가 점프를 하도록 만드는 블록입니다점프를 하는 조건으로 땅에 닿아 있어야 하고(@state=0) 스페이스바키를 눌러주어야 합니다스페이스바를 누르면 @y_velocit를 10으로 바꿔주고 @state를 1로 바꿔줌으로써 y축 이동을 가능하게 하고이로써 점프이동이 됩니다.

user_move단순히 캐릭터가 움직여야 하는 조건을 알고그것에 따라서 이동하게 합니다현재는 y축이동만이 필요합니다.

user_ground유저가 땅에 닿았는지를 확인하는 곳입니다현재는 땅에 닿았는지의 여부를 단순히 y축의 값으로 알고 있습니다. y가 0보다 작거나 같으면 땅에 닿았다는 것으로 인식하고 y축이동이 불가능하도록 @state를 0으로 바꿔줍니다.

user_gravity중력을 적용하는 곳입니다. y축속도를 계속해서 -1을 해줌으로써 점프력을 약화시키고 땅으로 떨어뜨립니다. -1의 값에 따라서 중력이 강하더나 약해집니다.

변수:

@state: 이 변수는 현재 고양이의 상태를 알아내기 위한 변수입니다. @state의 값에 따라서 점프중인지땅에 닿아있는지 알 수 있습니다이 변수를 사용함으로써 땅에 닿지 않은 상태에도 점프가 가능하게 된다던가땅에 닿았음에도 땅속으로 들어가게 되는 등의 현상을 방지하도록 합니다.

@y_velocity: y축으로의 속도를 정해줍니다이것이 0이 아닌 값이면 고양이는 움직이게 됩니다하지만 땅에 닿았을 경우에는 점프입력이 올때까지는 y이동이 안되도록 해줘야 땅속으로 꺼지지 않습니다.



이정도만 만들어주면 스페이스바를 누르면 점프하는 고양이를 만들 수 있습니다.




↑ 스페이스바를 눌러주세요.


스크립트 확인하기: https://scratch.mit.edu/projects/189143673/




댓글