Menu
CoddyTech

Podsumowanie: podwójny skok

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

W tym rozdziale ręcznie poruszaliśmy obiektem CharacterController: używaliśmy Move do chodzenia, przechowywaliśmy grawitację w polu, a skoki obliczaliśmy na podstawie ich wysokości. Bohater może teraz wykonać jeszcze jeden skok w powietrzu.

challenge icon

Wyzwanie

Średni

Niech bohater wykona skok i jeden skok w powietrzu. Chodzenie jest już zaimplementowane.

  1. Najpierw, gdy bohater stoi na ziemi: airJumpUsed = false, a opadająca verticalSpeed przyjmuje wartość -2f.
  2. Po Input.GetButtonDown("Jump"): jeśli bohater stoi na ziemi, verticalSpeed = Mathf.Sqrt(jumpHeight * -2f * gravity);; w przeciwnym razie, jeśli !airJumpUsed, wykonaj to samo z airJumpHeight i ustaw airJumpUsed.
  3. Następnie dodaj gravity * Time.deltaTime do verticalSpeed.

Naciśnij „Graj” i wykonaj podwójny skok na półkę. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class Hero : MonoBehaviour
{
    public float speed = 5f;
    public float gravity = -25f;
    public float jumpHeight = 2f;
    public float airJumpHeight = 1.28f;

    CharacterController controller;
    float verticalSpeed;
    bool airJumpUsed;

    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // Zresetuj na ziemi, wykonaj skok lub skok w powietrzu po naciśnięciu Space, a następnie dodaj grawitację

        Vector3 move = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical")) * speed;
        move.y = verticalSpeed;
        controller.Move(move * Time.deltaTime);
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Tworzenie prawdziwych gier

Poćwicz samodzielnie: Edytor online Unity