У меня есть несколько объектов, которые двигаются и камера должна подстраиваться под них и быть в середине между ними, но вместо плавного движения - она подёргивается постоянно, как быть?
Пробовал 2 варианта, но ни один не дал результата
public List<Transform> objectsList;
public float smoothSpeed = 5f;
private Camera cam;
private Vector3 center;
void Start()
{
cam = GetComponent<Camera>();
}
public void LateUpdate()
{
center = GetCenterOfObjects(objectsList);
Vector3 targetPosition = new Vector3(center.x, center.y, -10);
if (Vector3.Distance(transform.position, targetPosition) > 0.1f)
{
transform.position = Vector3.Lerp(transform.position, targetPosition, Time.deltaTime * smoothSpeed);
}
}
Vector3 GetCenterOfObjects(List<Transform> objects)
{
if (objects.Count == 0)
{
return Vector3.zero;
}
Bounds bounds = new Bounds(objects[0].position, Vector3.zero);
foreach (Transform obj in objects)
{
bounds.Encapsulate(obj.position);
}
Vector3 center = bounds.center;
return center;
}
И второй
public List<Transform> objectsList;
public float smoothSpeed = 5f;
private Camera cam;
private Vector3 center;
void Start()
{
cam = GetComponent<Camera>();
}
public void LateUpdate()
{
center = GetCenterOfObjects(objectsList);
Vector3 targetPosition = new Vector3(center.x, center.y, -10);
if (Vector3.Distance(transform.position, targetPosition) > 0.1f)
{
transform.position = Vector3.Lerp(transform.position, targetPosition, Time.deltaTime * smoothSpeed);
}
}
Vector3 GetCenterOfObjects(List<Transform> objects)
{
if (objects.Count == 0)
{
return Vector3.zero;
}
Vector3 sum = Vector3.zero;
foreach (Transform obj in objects)
{
sum += obj.position;
}
Vector3 center = sum / objects.Count;
return center;
}
Что я не так делаю?