* Для слежения лучше использовать Vector3.SmoothDamp(), в примере документации как раз это. Двигать камеру лучше в LateUpdate(), тут пример.
* В твоём коде public Vector3 offset не используется, хотя предполагается, что это указывает на смещение относительно центра target.
* Чтобы камера не двигалась, нужно её не двигать. Перед или после posNoZ.z = target.transform.position.z; добавляешь:Код
posNoZ.x = target.transform.position.x;
Но раз осталась одна переменная, быстрее будет не использовать векторы. Как-то так, код не проверял:
Код
if (target)
{
float posY = transform.position.y;
float targetDirectionY = (target.transform.position.y - posY);
float interpVelocityY = targetDirectionY * 5f;
//interpVelocity = new Vector3(0, interpVelocityY, 0);
float targetPosY = posY + interpVelocityY * Time.deltaTime;
//targetPos = new Vector3(0, targetPosY, 0);
transform.position = new Vector3(
transform.position.x
, Mathf.Lerp(posY, targetPosY, 0.125f)
, transform.position.z
);
}