Unity 입문 - Flappy Plane

강진규·2025년 2월 14일

Unity 입문

목록 보기
1/3
post-thumbnail

우리가 만들 게임은 Flappy Bird 의 Copy Game인 Flappy Plane 입니다.

[ Flappy Bird의 주요 특징 ]

  1. 단순한 조작
    • 한 번의 클릭 또는 터치로 새를 점프시키는 간단한 방식
  2. 난이도 상승
    • 장애물이 계속 등장하며 점점 어려워지는 도전적인 게임플레이
  3. 점수 기반 진행
    • 장애물을 통과할 때마다 점수가 증가하여 높은 점수를 기록하는 것이 목표
  4. 2D 아트 스타일
    • 간단하고 직관적인 배경과 스프라이트 디자인

언젠가 한번쯤 해본 듯한 게임을 만들어 보았다.
콘솔창만 보다가 Unity에서 보여지는 게임씬을 보니 설렜는데,
막상하니까 엄청 어려웠다. 따라가기도 벅찬 느낌이랄까...


[ 내가 생각한 핵심 기능 ]

장애물의 위치가 바뀌지 않고 계속 된다면 같은 상황만 반복 되고, 지루해지게 된다.

public Vector3 SetRandomPlace(Vector3 lastPosition, int obstacleCount)
{
    float holeSize = Random.Range(holeSizeMin, holeSizeMax);
    float halfHoleSize = holeSize / 2;

    topObject.localPosition = new Vector3(0, halfHoleSize);
    bottomObject.localPosition = new Vector3(0, -halfHoleSize);

    Vector3 placePosition = lastPosition + new Vector3(widthPadding, 0);
    placePosition.y = Random.Range(LowPosY, highPosY);

    transform.position = placePosition;

    return placePosition;
}  

위 코드를 다른곳에서 사용하여 장애물을 obstacleCount만큼 계속해서 생성해 주는데,
고정된 위치가 아니라 랜덤한 값을 줘서 계속해서 바뀌게끔 만들어 주었다.

holeSize = 범위 내 랜덤 값
halfHoleSize = holeSize / 2

±holeSize를 topObject, bottomObject.localPosition y값에 넣어줌

placePosition = lastPosition에서 widthPadding만큼 x가 이동한 값
placePosition.y = 범위 내 랜덤 값

transform.position = placePosition  > 다음을 위해 위치를 저장해둠

return placePosition

이해하기 쉽게 글로 적어보았다. 어떻게 동작하는지 어느정도 이해가 된거 같긴하다.


[ 결과 ]

결과적으로 완성은 했고, 빌드한 걸로 플레이도 잘된다.
근데 이해가 안되고 넘어간 부분이 너무너무너무너무 많아서
다시 되짚어 봐야될 것 같다...

그리고 이게 죽어도 점수가 장애물을 지나가면 1번만 올라가야 되는데,
죽은 상태에서도 OnTrigger가 발동 되서 계속 올라간다.

이것도 한번 고쳐봐야겠다.


[ 수정 ]

그냥 obstacle에 붙여놓은 BoxCollider의 크기를 수정해줬더니
내가 생각한 느낌으로 동작하게 되었다.

이거거든~

0개의 댓글