Implementering av Parkour-systemet i Unity

Konseptet parkour, en treningsdisiplin fokusert på å overvinne fysiske hindringer ved hjelp av bevegelse, har sett enorm popularitet i videospill, og tilbyr spillere et interaktivt og engasjerende miljø. Implementering av dette systemet i Unity kan heve spillopplevelsen. Denne opplæringen vil guide deg gjennom prosessen med å sette opp et grunnleggende parkour-system i Unity, med fokus på veggløping og hvelving.

Eiendeler påkrevd

1. Sette scenen

  • Sørg for at miljøet har vegger og hindringer merket på riktig måte, bruk "Wall" for vegger og "Obstacle" for hvelvbare hindringer.

2. Endre 'SC_TPSController'-skriptet for veggkjøring

2.1. Oppdage en vegg:

  • Denne metoden sjekker om karakteren er ved siden av en vegg ved hjelp av 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. Veggløping

  • Denne coroutinen takler veggkjøring.
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.
}
  • Integrer veggløp i 'Update()'-metoden:
// 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. Endre 'SC_TPSController' for Vaulting

3.1. Å oppdage en hindring

  • Se etter et hvelvbart hinder foran karakteren.
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. Hvelving

  • Legg til en hvelvingsmetode:
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.
}
  • Integrer hvelving i 'Update()'-metoden:
// Vaulting
if (IsObstacleInFront() && Input.GetButton("Jump") && canMove && characterController.isGrounded)
{
    Vault();
}

Konklusjon

Disse modifikasjonene vil introdusere veggkjøring og hvelvingsfunksjoner til den eksisterende tredjepartsspillerkontrolleren. Test disse nye bevegelsene i ulike scenarier for å sikre at de fungerer etter hensikten. Justeringer kan være nødvendig avhengig av spillets spesifikke miljø eller ønsket parkour-mekanikk.

Foreslåtte artikler
Bilkontroller for Unity
Player 3D og 2D Wall Jump Tutorial for Unity
Opprette spillerbevegelse i Unity
Helikopterkontrollør for Unity
Legger til Double Jump Support til en 2D Platformer Character Controller i Unity
Hvordan lage krankontroll i Unity
Karakterkontroller Hvordan legge til evne til å skyve rigidbodies i enhet