Ruch kamery za postacią Unity 2D

0

Witam, mam pewien problem z grą w programie Unity. Ustawiłem ruch kamery tak, aby śledziła postać w osi X. Problem jest w tym, że chciałbym, aby poruszała się ona tylko w prawo, a ruch w lewo zablokować. Nie mam pomysłu jak to zrobić, próbowałem instrukcję warunkową if z warunkiem, aby instrukcja nic nie robiła jeżeli pozycja X się zmniejsza, ale nie mam pomysłu jak to zrobić. Przesyłam kod napisany w MainCamera.

void LateUpdate()
    {
        Vector3 temp = transform.position;
        temp.x = playerTransform.position.x;

      transform.position = temp;

    }
1
Vector3 temp;
Vector3 camPos;

void Start()
{
    camPos = transform.position;
}

void LateUpdate()
{
    temp = playerTransform.position;

    camPos.x = Mathf.Max(temp.x, camPos.x);

    transform.position = camPos;
}

Chociaż to i tak bez sensu...
Kiedy kamera jest w taki sposób "przyspawana" do postaci, to prawdopodobnie nie chciałbyś w ogóle, żeby postać mogła się poruszać w lewą stronę, bo wtedy będzie mogła wyjść poza ekran i kamera już do niej nie wróci. Więc kamera zawsze może przyjmować pozycję postaci: transform.position = playerTransform.position;, a ze skryptu postaci można usunąć poruszanie się w lewo.

Ale, postać ma trochę miejsca do lewej krawędzi ekranu (przy ruchu w prawo, kamera zawsze trzyma postać na środku ekranu), i jeśli chcesz jej pozwolić na poruszanie się w lewo to musisz zadbać, żeby nigdy pozycja X postaci nie była mniejsza niż pozycja kamery minus połowa szerokości ekranu.

Polecam uważnie oglądnąć ten filmik:
Na początku gostek rysuje i tłumaczy najważniejsze rzeczy, które trzeba zaimplementować dla kamery w platformówce 2D.

0

Właśnie chodzi mi o to, czy da się tak zrobić, aby postać mogła się poruszać w lewo, ale kamera już nie. Po prostu jakaś instrukcja warunkowa, która sprawdza, czy wartość temp.x się zmniejsza i jeżeli tak, to kamera ma nie śledzić postaci

1

No to właśnie Ci napisałem ten kod, nad tekstem.
Można to zrobić z instrukcją warunkową

  • przypisujemy pozycję X gracza do pozycji X kamery, tylko jeśli pozycja X gracza jest większa od pozycji X kamery.

ale uznałem, że zastosowanie funkcji Max będzie krótsze.

1

To co opisałeś, że postać zniknie za kamerą łatwo rozwiązań, wystarczy collider w lewej krawędzi kamery, który wraz z nią się przesuwa - wtedy postać nie ma prawa wyjść poza krawędź

0

Spoko, więc wszystko masz gotowe ;)

Łapki w górę itp...

1

Dzięki za pomoc ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1