回顾:二段跳
本课属于 Coddy Unity 学习旅程的“打造真正的游戏”单元。第 43 课,共 60 课。
这一章通过手动控制 CharacterController 移动:用 Move 行走,把重力保存在字段中,并根据跳跃高度计算跳跃效果。主角还能在空中再跳一次。
挑战
中等让英雄跳跃,并在空中再跳一次。行走部分已经写好。
- 首先,落地时:
airJumpUsed = false,如果正在下落,就将verticalSpeed设为-2f。 - 当按下
Input.GetButtonDown("Jump")时:如果落地,就执行verticalSpeed = Mathf.Sqrt(jumpHeight * -2f * gravity);;否则,如果!airJumpUsed,则使用airJumpHeight执行相同的操作,并设置airJumpUsed。 - 然后将
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);
}
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
打造真正的游戏中的所有课
自己练习: Unity 在线编辑器