Wdrażanie systemu Parkour w Unity

Koncepcja parkour, dyscypliny treningowej skupiającej się na pokonywaniu przeszkód fizycznych za pomocą ruchu, zyskała ogromną popularność w grach wideo, oferując graczom interaktywne i wciągające środowisko. Wdrożenie tego systemu w Unity może podnieść poziom rozgrywki. Ten samouczek poprowadzi Cię przez proces konfigurowania podstawowego systemu parkour w Unity, skupiając się na bieganiu po ścianach i wskakiwaniu na przeszkody.

Wymagane zasoby

  • Podstawowy kontroler postaci: Będziemy używać kontrolera gracza z Kamery Trzeciej Osoby w Unity jako klasy bazowej do modyfikacji.
  • Animacje parkour: bieganie po ścianach, skakanie itp.

1. Ustawiać scenę

  • Upewnij się, że otoczenie ma odpowiednio oznaczone ściany i przeszkody, używając "Wall" dla ścian i "Obstacle" dla przeszkód, które można przeskoczyć.

2. Modyfikowanie skryptu 'SC_TPSController' do biegania po ścianie

2.1. Wykrywanie ściany:

  • Ta metoda sprawdza, czy postać znajduje się przy ścianie, używając raycasting.
bool IsBesideWall(Vector3 direction)
{
    RaycastHit hit;
    if (Physics.Raycast(transform.position, direction, out hit, 1f))
    {
        if (hit.transform.CompareTag("Wall"))
        {
            return true;
        }
    }
    return false;
}

2.2. Bieganie po ścianie

  • Ta współprogram obsługuje bieganie po ścianach.
public float wallRunTime = 2f; // Duration of the wall run.

IEnumerator WallRun(Vector3 direction)
{
    float startTime = Time.time;
    canMove = false; // Disable regular movement during wall run.

    while (Time.time - startTime < wallRunTime)
    {
        characterController.Move(direction * speed * Time.deltaTime);
        yield return null;
    }

    canMove = true; // Enable regular movement after wall run.
}
  • Zintegruj bieganie po ścianach w metodzie 'Update()':
// Wall Run
if (IsBesideWall(transform.right) && Input.GetButton("Jump") && canMove && !characterController.isGrounded)
{
    StartCoroutine(WallRun(transform.right));
}
else if (IsBesideWall(-transform.right) && Input.GetButton("Jump") && canMove && !characterController.isGrounded)
{
    StartCoroutine(WallRun(-transform.right));
}

3. Modyfikowanie 'SC_TPSController' dla repozytorium

3.1. Wykrywanie przeszkody

  • Sprawdź, czy przed postacią nie ma przeszkody, którą można przeskoczyć.
bool IsObstacleInFront()
{
    RaycastHit hit;
    if (Physics.Raycast(transform.position, transform.forward, out hit, 1.5f))
    {
        if (hit.transform.CompareTag("Obstacle"))
        {
            return true;
        }
    }
    return false;
}

3.2. Sklepienie

  • Dodaj metodę przechowywania:
void Vault()
{
    canMove = false; // Disable regular movement during vaulting.
    
    // Translate the player over the obstacle.
    Vector3 vaultMovement = (Vector3.up + transform.forward) * speed * Time.deltaTime;
    characterController.Move(vaultMovement);
    
    canMove = true; // Enable regular movement after vaulting.
}
  • Zintegruj sklepienie w metodzie 'Update()':
// Vaulting
if (IsObstacleInFront() && Input.GetButton("Jump") && canMove && characterController.isGrounded)
{
    Vault();
}

Wniosek

Te modyfikacje wprowadzą funkcje biegania po ścianach i skakania do istniejącego kontrolera gracza trzeciej osoby. Przetestuj te nowe mechanizmy w różnych scenariuszach, aby upewnić się, że działają zgodnie z przeznaczeniem. W zależności od konkretnego środowiska gry lub pożądanej mechaniki parkour mogą być konieczne dostosowania.