Dodanie wspinaczki w grach Unity

W tym samouczku omówimy, jak wdrożyć mechanikę wspinaczki w grze Unity. Wspinaczka może nadać ekscytujący wymiar systemowi poruszania się w grze, czyniąc ją bardziej wciągającą i dynamiczną. Udostępnimy przewodnik krok po kroku i przykłady kodu, które pomogą Ci zintegrować tę funkcję.

Konfigurowanie środowiska

Zanim zaczniemy kodować, upewnij się, że w swoim projekcie Unity skonfigurowałeś następujące ustawienia:

  • Postać gracza z Rigidbody i Collider.
  • Obiekty, na które można się wspiąć, z określonym znacznikiem (np. "Climbable").

Tworzenie skryptu wspinaczkowego

Utwórz nowy skrypt C# o nazwie PlayerClimbing i dołącz go do swojej postaci gracza. Ten skrypt zajmie się wykrywaniem i ruchem podczas wspinaczki.

using UnityEngine;

public class PlayerClimbing : MonoBehaviour
{
    public float climbSpeed = 3.0f;
    private bool isClimbing = false;
    private Rigidbody rb;
    private Collider climbCollider;

    void Start()
    {
        rb = GetComponent();
    }

    void Update()
    {
        if (isClimbing)
        {
            Climb();
        }
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Climbable"))
        {
            isClimbing = true;
            climbCollider = other;
            rb.useGravity = false; // Disable gravity while climbing
        }
    }

    private void OnTriggerExit(Collider other)
    {
        if (other == climbCollider)
        {
            isClimbing = false;
            rb.useGravity = true; // Re-enable gravity when not climbing
        }
    }

    private void Climb()
    {
        float verticalInput = Input.GetAxis("Vertical");
        Vector3 climbDirection = new Vector3(0, verticalInput * climbSpeed, 0);
        rb.velocity = climbDirection;
    }
}

Wyjaśnienie Kodeksu

Oto zestawienie działania każdej części skryptu:

  1. Zmienne: climbSpeed kontroluje prędkość wspinania się, isClimbing sprawdza, czy gracz aktualnie się wspina, rb odwołuje się do Rigidbody gracza, oraz climbCollider trzyma zderzacz obiektu, na który można się wspiąć.
  2. Metoda startowa: Inicjuje odniesienie Rigidbody.
  3. Metoda aktualizacji: Stale sprawdza, czy gracz się wspina i wywołuje metodę Climb(), jeśli to prawda.
  4. OnTriggerEnter Metoda: Wykrywa, kiedy gracz wchodzi w zderzacz obiektu, na który można się wspiąć, i umożliwia wspinaczkę, ustawiając isClimbing na prawdziwą i wyłączając grawitację.
  5. Metoda OnTriggerExit: Wykrywa, kiedy gracz opuszcza obiekt, na który można się wspiąć, i zatrzymuje proces wspinaczki, ustawiając isClimbing na wartość false i ponownie włączając grawitację.
  6. Metoda wspinania: Porusza gracza w górę i w dół w oparciu o wejście pionowe.

Testowanie mechanika wspinaczkowego

Po zaimplementowaniu skryptu przetestuj mechanikę wspinaczki, umieszczając gracza w pobliżu obiektu, na który można się wspiąć i naciskając pionowe klawisze wejściowe (zazwyczaj W/S lub strzałki w górę/w dół). Gracz powinien poruszać się w górę i w dół obiektu, na który można się wspiąć.

Wniosek

Dodanie mechaniki wspinaczki do gry Unity może znacznie poprawić wrażenia z rozgrywki. Dzięki temu samouczkowi masz teraz podstawowy skrypt wspinaczkowy, który możesz dalej dostosowywać i rozszerzać. Eksperymentuj z różnymi obiektami, na które można się wspinać, animacjami i dodatkowymi funkcjami, aby uczynić swój system wspinaczkowy bardziej solidnym i wciągającym.