← FC Coder · HomePhase 04 · Lesson 50 · 60 min
Lesson50
Phase Four · Game · Matchday 50 · The Hunt

关卡 2 · 敌人 AI baby
追你跑

Today's 3 Jobs · 今天这三件事
  1. 01
    moveToward 纯函数 · 单位向量
    dx/dist 等
  2. 02
    3 敌人 · 每秒选目标 · 每帧追
    decision tick
  3. 03
    🌟 碰敌人失球 · 真有挑战
    -1 球

对面没人 → 像踢空门。今天 3 敌人追。`moveToward(enemy, target, speed)` 纯函数 · 单位向量。每秒选目标 + 每帧追。游戏有挑战感了。

Concept

单位向量 + decision tick

Math.hypot(dx, dy) = sqrt(dx² + dy²)
方向
dx/dist · dy/dist
速度
enemy.x += (dx/dist) × speed × dt
决策
每秒选目标 · 每帧追
Half 2

函数 · 3 敌 · 碰撞 · 间隔

01moveToward 函数
01Min

Cursor + pnpm dev

老三件套。
02Min

lib/game.ts · function moveToward(enemy, target, speed)

Math.hypot · 单位向量 · 乘 speed。纯函数。
023 敌人 + 决策
03Min

enemies state · 3 个 · 颜色红

useState<Pos[]>。
04Min

setInterval 1s 选目标 · rAF 每帧调 moveToward

目标 = 最近球员 / 球。
05Min

球员碰敌人 → score -1 + 球重置

AABB(47 课)。
03AI 避免拥挤
06Min

AI Pair: 敌人间隔(避免叠一起)

Cmd+K · '加 separation force · enemies 互相排斥'。
07Min

📸 截图敌人追球员

Phase 4 第 10 张战利品。
讲给爸爸听

3 题

01单位向量是什么?Hint ↓

方向 · 长度 1。dx/dist 和 dy/dist。

02每秒选目标 vs 每帧选?Hint ↓

节省计算 · 真游戏 AI 也这样(更稳定 + 性能)。

03moveToward 是纯函数?Hint ↓

是。心法继续 · 易测。

温度计

评分

今天难度Difficulty
0
今天开心Fun
0
Final Whistle · 终场哨

敌人追你了 —— 终于像比赛。

7 步没打勾。

Next · Lesson 51 · 道具