배경은 7개의 레이어를 사용한다. 레이어 마다 2개의 같은 이미지를 들어가있다.
레이어는 각자 속도를 가지고 좌측으로 이동한다.
일정 거리가 이동되면, 보이지 않게 된 왼쪽 편의 이미지가 오른쪽으로 이동한다.
이를 반복해서 움직이는 것 처럼 보이게 한다.
[SerializeField] private float[] Layer_Speed = new float[7];
[SerializeField] private GameObject[] Layer_Objects = new GameObject[7];
public void LayerMove()
{
for (int i = 1; i < 7; i++)
{
Layer_Objects[i].transform.GetChild(0).position += Vector3.left * Time.deltaTime * Layer_Speed[i];
Layer_Objects[i].transform.GetChild(1).position += Vector3.left * Time.deltaTime * Layer_Speed[i];
if (Layer_Objects[i].transform.GetChild(0).localPosition.x <= -40.0f)
{
Layer_Objects[i].transform.GetChild(0).localPosition = new Vector2(Layer_Objects[i].transform.GetChild(0).localPosition.x + 80.0f, 0);
}
if (Layer_Objects[i].transform.GetChild(1).localPosition.x <= -40.0f)
{
Layer_Objects[i].transform.GetChild(1).localPosition = new Vector2(Layer_Objects[i].transform.GetChild(1).localPosition.x + 80.0f, 0);
}
}
}
GetChild를 통해서 레이어 아래에 있는 요소들을 받아낸다.
함수를 Update를 넣어서 이동시키고, 레이어 포지션이 일정 아래로 내려가면 오른쪽으로 옮긴다.
private ParallaxController parallaxController;
public void Initialize()
{
parallaxController = FindObjectOfType<ParallaxController>();
}
FindObjectOfType으로 생성될 Prefabe안의 스크립트를 찾았다.
플레이어가 공격하고 이동을 하는 FixedUpdate에 함수를 넣어두었다.
이동할 때 같이 배경이 이동되도록 LayerMove()메서드를 사용하도록 했다.
(요구사항) Animation을 다른곳으로 옮겨야 한다.