Menu
CoddyTech

Ruchome platformy

Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 49 z 56.

challenge icon

Wyzwanie

Średni

Niebieska platforma powinna przesuwać się tam i z powrotem nad przepaścią. Zachowaj wszystko z poprzedniej lekcji.

Uzupełnij MovingPlatform:

  • Dwa pola ustawiane w Inspectorze: distance (3) i speed (1.5), oraz public Vector3 delta.
  • Przesuwa się od miejsca, w którym zaczyna, o distance jednostek wzdłuż osi +x z prędkością speed jednostek na sekundę, a potem wraca na początek i tak bez końca.
  • W każdej klatce delta określa, jak daleko platforma przesunęła się w tej klatce: jej pozycja po przesunięciu minus pozycja przed nim.

CharacterController nie jest przenoszony przez obiekt, na którym stoi: na ruchomej platformie pozostaje w miejscu, a platforma przesuwa się spod niego. Przesuwanie jej za pomocą transform.position również nie działa: następne wywołanie Move kontrolera zaczyna od miejsca, w którym fizyka widziała go po raz ostatni, i cofa zmianę. Spraw, by Player poruszał się razem z platformą:

  • Dodaj OnControllerColliderHit. Gdy normalna uderzenia jest skierowana w górę (hit.normal.y ma wartość większą niż 0.5: gracz stoi na obiekcie), a obiekt ma komponent MovingPlatform, zapisz tę platformę w polu.
  • W Update dodaj delta tej platformy do ruchu przekazywanego do controller.Move, a potem usuń odwołanie do platformy (ustaw pole na null). Wywołanie Move ponownie ją wykryje, dopóki gracz będzie na niej stał.

Naciśnij Play, wskocz na platformę i jedź na niej, a następnie naciśnij Check.

Spróbuj swoich sił

using UnityEngine;

public class MovingPlatform : MonoBehaviour
{
    // W późniejszej lekcji zostanie to uzupełnione: platforma poruszająca się tam i z powrotem.
}

Wszystkie lekcje w sekcji Tworzenie prawdziwych gier