Menu
CoddyTech

回顾:二段跳

本课属于 Coddy Unity 学习旅程的“打造真正的游戏”单元。第 43 课,共 60 课。

这一章通过手动控制 CharacterController 移动:用 Move 行走,把重力保存在字段中,并根据跳跃高度计算跳跃效果。主角还能在空中再跳一次。

challenge icon

挑战

中等

让英雄跳跃,并在空中再跳一次。行走部分已经写好。

  1. 首先,落地时:airJumpUsed = false,如果正在下落,就将 verticalSpeed 设为 -2f。
  2. 当按下 Input.GetButtonDown("Jump") 时:如果落地,就执行 verticalSpeed = Mathf.Sqrt(jumpHeight * -2f * gravity);;否则,如果 !airJumpUsed,则使用 airJumpHeight 执行相同的操作,并设置 airJumpUsed。
  3. 然后将 gravity * Time.deltaTime 加到 verticalSpeed 上。

按“开始”,进行二段跳跳上平台。然后按“检查”。

亲手试试

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()
    {
        // 落地时重置,按 Space 跳跃或在空中再次跳跃,然后施加重力

        Vector3 move = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical")) * speed;
        move.y = verticalSpeed;
        controller.Move(move * Time.deltaTime);
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

打造真正的游戏中的所有课

自己练习: Unity 在线编辑器