перемещение камеры в unity 2D

хочу сделать перемещение камеры через функцию OnBecameInvisible() и написал такой код

    public Camera Camera;
    public int y = 31, x = 55;
    void OnBecameInvisible()
    {
        if (Camera.transform.position.x > transform.position.x)
            Camera.transform.position = new Vector3(Camera.transform.position.x - x, Camera.transform.position.y, Camera.transform.position.z);
        else if (Camera.transform.position.x < transform.position.x)
            Camera.transform.position = new Vector3(Camera.transform.position.x + x, Camera.transform.position.y, Camera.transform.position.z);
        else if(Camera.transform.position.y > transform.position.y)
            Camera.transform.position = new Vector3(Camera.transform.position.x, Camera.transform.position.y - y, Camera.transform.position.z);
        else if(Camera.transform.position.y < transform.position.y)
            Camera.transform.position = new Vector3(Camera.transform.position.x, Camera.transform.position.y + y, Camera.transform.position.z);
    }

и понял что это будет работать только по горизонтали.

не могу пока придумать как разделить проверку на: по вертикали , по горизонтали .


Ответы (1 шт):

Автор решения: iKuzmychov

Просто сохраняйте изменение координат в переменные:

var deltaX = 0f;
var deltaY = 0f;

if (Camera.transform.position.x < transform.position.x)
    deltaX = x;
else if (Camera.transform.position.x > transform.position.x)
    deltaX = -x;

if (Camera.transform.position.y < transform.position.y)
    deltaY = y;
else if (Camera.transform.position.y > transform.position.y)
    deltaY = -y;

Camera.transform.position = Camera.transform.position + new Vector3(deltaX, deltaY, 0);
→ Ссылка