▣ 코드 설명
배경 배열 (public GameObject[] backgrounds):
이 배열은 배경 오브젝트 3개를 참조합니다. backgrounds[0], backgrounds[1], backgrounds[2]와 같은 방식으로 접근하며, 각각이 배경 오브젝트를 나타냅니다.
Unity 에디터에서 3개의 배경 오브젝트를 이 배열에 드래그해서 할당합니다.
배경 이동 속도 (public float backgroundSpeed):
backgroundSpeed 변수는 배경이 왼쪽으로 이동하는 속도를 제어합니다. 값이 클수록 배경이 더 빠르게 움직입니다.
배경의 가로길이 (private float backgroundWidth):
backgroundWidth는 배경 오브젝트의 실제 가로 크기를 저장합니다. 배경을 배치하거나 이동할 때, 배경의 가로길이를 기준으로 처리하기 위해 사용됩니다.
코드에서는 첫 번째 배경의 localScale.x을 사용하여 가로길이를 계산합니다.
(backgroundWidth = backgrounds[0].transform.localScale.x)배경 배치 (1, 2, 3 순서로):
Start() 함수에서 배경이 처음으로 나란히 배치됩니다.
for 루프를 통해 각 배경 오브젝트가 backgroundWidth만큼의 간격을 두고 x축 방향으로 배치됩니다. 예를 들어, 첫 번째 배경은 x축에서 0 위치, 두 번째 배경은 backgroundWidth만큼 오른쪽에, 세 번째 배경은 두 번째 배경의 오른쪽에 위치합니다.
배경 이동:
Update() 함수에서 매 프레임마다 배경을 왼쪽으로 이동시킵니다. Vector3.left * backgroundSpeed * Time.deltaTime를 통해 배경이 일정한 속도로 이동합니다.
각 배경 오브젝트는 계속해서 화면 왼쪽으로 이동하며, 왼쪽 끝을 벗어났는지 체크합니다.
배경이 왼쪽 끝을 벗어났을 때:
만약 배경이 왼쪽 끝을 벗어났다면 (if (backgrounds[i].transform.position.x <= -backgroundWidth)), 그 배경을 가장
오른쪽 끝에 있는 배경 뒤로 이동시킵니다.
이를 통해 배경이 무한히 이어지는 효과를 구현할 수 있습니다.
오른쪽 끝에 있는 배경 찾기:
GetRightmostBackgroundPosition() 함수는 모든 배경 오브젝트 중에서 x좌표가 가장 큰, 즉 가장 오른쪽에 있는 배경을
찾아냅니다. 이 함수는 왼쪽 끝을 벗어난 배경을 가장 오른쪽 배경의 바로 뒤로 이동시킬 때 사용됩니다.
동작 방식 요약:
배경 오브젝트 3개가 시작할 때 나란히 배치됩니다.
각 배경은 일정한 속도로 왼쪽으로 이동합니다.
배경이 화면의 왼쪽 끝을 벗어나면, 가장 오른쪽 끝으로 이동하여 무한히 반복되는 배경 효과를 만들어냅니다.
▣ 코드설명:
localScale과 스프라이트 크기 곱하기:
각 배경 오브젝트의 localScale.x와 스프라이트의 bounds.size.x를 곱하여 실제 가로 크기를 정확히 계산했습니다. 이는 배경이 localScale로 확장되거나 축소될 때 이를 반영하여 오차를 줄입니다.
만약 SpriteRenderer가 없다면 localScale.x 값만 사용하여 가로 크기를 계산합니다.
▣ 관련API:
https://docs.unity3d.com/ScriptReference/SpriteRenderer-bounds.html
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 오브젝트 스크롤링 (1) | 2024.09.13 |
---|---|
유니티 2D Collider (0) | 2024.09.13 |
유니티 코루틴 (3) | 2024.09.12 |
유니티 콜리전 범위 시각화 (0) | 2024.09.11 |
유니티 2D Object Ping Pong (0) | 2024.09.11 |
댓글