Menu
CoddyTech

Ôn tập: nhảy kép

Thuộc phần Xây dựng trò chơi thực tế trong hành trình Unity của Coddy. Bài học 43 trên 60.

Trong chương này, bạn đã tự di chuyển CharacterController: dùng Move để đi bộ, lưu trọng lực trong một trường và tính các cú nhảy dựa trên độ cao. Nhân vật chính có thêm một lần nhảy trên không.

challenge icon

Thử thách

Trung bình

Cho nhân vật nhảy và nhảy thêm một lần trên không. Phần đi bộ đã có sẵn.

  1. Đầu tiên, khi đang chạm đất: airJumpUsed = false, và nếu đang rơi thì verticalSpeed chuyển thành -2f.
  2. Khi Input.GetButtonDown("Jump"): nếu đang chạm đất, đặt verticalSpeed = Mathf.Sqrt(jumpHeight * -2f * gravity);; nếu không, khi !airJumpUsed, làm tương tự với airJumpHeight, rồi đặt airJumpUsed.
  3. Sau đó cộng gravity * Time.deltaTime vào verticalSpeed.

Nhấn Chơi rồi nhảy hai lần lên gờ. Sau đó nhấn Kiểm tra.

Tự làm thử

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()
    {
        // Đặt lại trạng thái khi chạm đất, nhấn Space để nhảy hoặc nhảy giữa không trung, rồi áp dụng trọng lực

        Vector3 move = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical")) * speed;
        move.y = verticalSpeed;
        controller.Move(move * Time.deltaTime);
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Xây dựng trò chơi thực tế

Tự luyện tập: Playground Unity