우리가 만들 게임은 Stack의 Copy Game인 The Stack입니다.
Stack의 주요 특징
앱스토어에 들어가면 항상 상위권에 이런 류의 게임이 있다.
이전까지의 강의는 2D프로젝트였는데, 이번의 게임은 3D프로젝트에서 진행되었다.
그래서 그런가 더 어려웠다...
게임을 진행하면 타이밍에 맞춰 블록을 쌓게 되는데, 이때 타이밍이 안맞으면 블록이 잘려나간다.
이 점이 게임을 하는데 있어 재미를 더 주었다고 생각이 든다.
void CreateRubble(Vector3 pos, Vector3 scale)
{
GameObject go = Instantiate(lastBlock.gameObject);
go.transform.parent = this.transform;
go.transform.localPosition = pos;
go.transform.localScale = scale;
go.transform.localRotation = Quaternion.identity;
go.AddComponent<Rigidbody>();
go.name = "Rubble";
}
이 메서드는 오차범위에 해당되는 부분을 받아와 잘려진 조각으로 만들어 주게 된다.
Rigidbody 컴포넌트를 add해주고 Rubble 이라는 이름을 부여해서
나중에 DestroyZone을 통해 생성된 조각들을 삭제시켜준다.
float rubbleHalfScale = deltaX / 2;
CreateRubble(
new Vector3(
isNegativeNum ?
lastPosition.x + stackBounds.x / 2 + rubbleHalfScale :
lastPosition.x - stackBounds.x / 2 - rubbleHalfScale,
lastPosition.y,
lastPosition.z
),
new Vector3(deltaX, 1, stackBounds.y)
CreateRubble 메서드는 블록을 위치시키는 메서드의 부분에서 사용하게 된다.
deltaX는 이전 블록의 x값과 지금 블록의 x값이 오차를 계산한 값이다.
rubbleHalfScale는 deltaX / 2 한 값이다.
stackBounds.x는 기본값을 가지고 있는데 코드 진행 중 deltaX만큼 빼주게 된다.
stackBounds가 매번 오차값을 뺀 상태로 갱신되고 그 면적만큼의 블록이 위치하게 된다.
오차 범위만큼의 면적을 가진 조각들은 CreateRubble을 통해 생성 되고,
DestroyZone을 만나면 삭제되게 된다.
사실 이렇게 글로 풀어쓰면서도 아직 제대로 이해한 건지 모르겠지만,
아무튼 이런식으로 진행되는 것 같다.

진짜 어디선가 본 것 같은 결과물을 보고 깜짝 놀랐다.
물론 강의를 따라가는 것도 벅차서 힘들었지만, 다하고 나니까 뭔가 뿌듯했달까...?
3D는 초면이라 따라하기 조금 어렵웠는데, 뭔가 2D랑 다른게 딱히 없는 느낌이였다.
그냥 Unity가 어렵다