준비물
발판
U = 캐릭터
B = 배경
캐릭터 따라다닐 카메라
코드
public class U1 : MonoBehaviour
{
public Rigidbody2D 리지드바디;
public float 속도;
private void Update()
{
Vector2 이동벡터 = new Vector2();
if (Input.GetKey(KeyCode.A))
{
이동벡터.x--;
}
if (Input.GetKey(KeyCode.D))
{
이동벡터.x++;
}
Vector2 p = 리지드바디.velocity;
p.x = 이동벡터.x * 속도;
리지드바디.velocity = p;
}
}
public class B1 : MonoBehaviour
{
public U1 유닛;
private Vector3 기본위치;
private void Start()
{
기본위치 = transform.position;
}
private void LateUpdate()
{
Vector3 새위치 = 기본위치 + ((유닛.transform.position - 기본위치) * 0.9f);
새위치.z = 기본위치.z;
transform.position = 새위치;
}
}
결과
Cinemachine으로 하면 덜덜덜 거리던데
이건 왜인지 모르겠다
시네머신이 어떻게 돌아가는진 모르겠으나 배경보다 나중에 호출되서 떨리는 것 같음
만약에 시네머신도 LateUpdate에서 돌아간다고 하면 배경 움직이는 함수를 그보다도 늦게 호출해야함
시네머신 brain에 보면 Update Method가 있는데 이거를 Manual Update로 바꾸고 배경 움직이는 함수 첫줄에다가 brain.ManualUpdate() 호출해주셈
업데이트 시기를 개발자가 직접 조절할 수 있게 짜여있으니 이걸로 컨트롤하면 될 듯 ㅎㅎ
ㄳㄳ
방법이 여러가지 있는데 전부 한번씩 해봐야겠다
캐릭터 덜덜 거리는 거라면 rigidbody2d interpolation을 켜주세욘. 카메라 부드럽게 움직이는게 rigidbody랑 동기화가 안되서 그렇습니당
배경이 덜덜거려 배경을 Update에서 캐릭터 따라가게 업데이트 했더니 망 ㅠㅠ