🐵指尖猴全新升级
第23课:平台跳跃
🦘

平台跳跃

跳得爽的秘密:重力+起跳速度

📖知识引入

🌍重力:每帧拽你一下
跳跃不是「咻」地上去,而是先给一个向上的速度,然后重力每一帧把它往下拽:升得越来越慢,到顶,再加速落下——完美的抛物线!
🦘起跳=发炮
按下跳跃键那一瞬,给角色一个向上速度(如vy=-12):像发射一枚炮弹。之后松不松手,角色都按抛物线飞完全程。
🧱落地才能再跳
必须站在地面/平台上才允许起跳,否则能无限连跳直接飞出天际。判断「脚底下是不是实地」,是平台游戏最关键的检测。
📐平台=可踩的矩形
平台就是一块块矩形碰撞盒:角色下落时脚部碰到平台顶边->落在上面,速度清零。碰侧面->被挡住,逼你跳过去。
🎚️手感全靠调参
重力0.8还是1.2?起跳-12还是-15?一改,手感天差地别。把「太飘/太沉」的感觉告诉AI,让它帮你二分法调参。
💡
跳跃的真相:一个向上的初速度,被重力一帧帧拽回地面!

🔍一次跳跃的一生

// 平台跳跃的物理核心
let player = { x: 50, y: 300, vy: 0 };
const GRAVITY = 1;      // 重力:每帧拽一下
const JUMP = -12;      // 起跳初速度
let onGround = true;    // 是否站在实地

function update() {
  // 左右移动(水平不受重力影响)
  if (keys.left)  player.x -= 5;
  if (keys.right) player.x += 5;

  // 空格起跳:只有落地才能跳!
  if (keys.space && onGround) {
    player.vy = JUMP;      // 发射「炮弹」
    onGround = false;
  }

  // 重力:每帧拽一下
  player.vy += GRAVITY;
  player.y += player.vy;

  // 落地检测:脚碰平台顶边
  for (let p of platforms) {
    if (踩到顶边(player, p)) {
      player.y = p.y;      // 站上平台
      player.vy = 0;       // 速度清零
      onGround = true;     // 可以再跳了
    }
  }
}
起跳速度-12、重力+1时,
角色的y坐标变化:

速度 高度(y越小越高)

-12→🚀 离地!
-11→上升
-10→上升
-9→上升(越来越慢)
-5→还在升
0→⭐ 到达最高点!
+1→开始下落
+5→下落
+10→越掉越快
+12→💥 落地!速度清零

画出来就是一条抛物线:

y
│         ╭─╮
│       ╭─╯   ╰─╮
│     ╭─╯         ╰─╮
│   ╭─╯               ╰─
└──────────────────────▶ 时间
  起跳   最高点   落地

给AI的启动提示词:

「用网页JS做平台跳跃游戏: 左右方向键移动, 空格跳跃(有重力和抛物线), 画面里有3块高低不同的平台, 从起点跳到右边的旗帜过关, 掉出屏幕底部回到起点。」

🎯小测验

第1题:游戏里跳跃的真实原理是?

第2题:防止玩家「无限连跳飞上天」,关键是?

第3题:角色跳跃「太飘、像月球漫步」,应该?

📝本课知识点

  • ✓跳跃=初速度+重力=抛物线
  • ✓起跳只在落地时允许
  • ✓平台是可踩的矩形碰撞盒
  • ✓手感靠参数:重力与起跳速度
  • ✓感觉描述给AI帮你调参
第23课完成!继续探索下一课吧 🚀