## 👋 项目介绍
这是一款结合动态轨迹追踪与交互的趣味游戏!玩家通过点击屏幕控制「A蛋」的移动方向,而「蜘蛛网」会根据点击位置实时生成轨迹。游戏包含动态背景、音效反馈和角色造型切换,适合学习Scratch中的变量控制、消息广播和自定义积木设计。最终效果包含:角色移动追踪、轨迹绘制、背景同步缩放和音效联动。
## 🎯 你将学会
1. 全局变量与动态数值更新
2. 消息广播机制实现多角色交互
3. 自定义积木的封装与调用
4. 动态轨迹的绘制与坐标计算
5. 游戏角色的多造型切换
## 🛠️ 开始制作
### 第一步:项目初始化与舞台设置
**操作步骤**:
创建新项目 → 添加背景图片「截屏2025-05-08_19」→ 删除默认背景 → 设置音效「啵」→ 创建6个全局变量(webx, weby, speedX, speedY, viewX, viewY)。
**代码实现**:
```scratch
when green flag clicked
set [viewX v] to [0]
set [viewY v] to [0]
set [speedX v] to [0]
set [speedY v] to [0]
forever
change [speedY v] by (-0.5)
计算速度 (x position) (y position)
change [viewX v] by ((0) - (speedX))
change [viewY v] by ((0) - (speedY))
point towards (蜘蛛网 v)
erase all
broadcast (消息1 v)
end
```
**逻辑解析**:
- 初始化时将镜头偏移量(viewX/Y)和移动速度(speedX/Y)设为0
- 永久循环中自动下移镜头并重新计算视角偏移量
- 通过广播消息触发后续角色逻辑

### 第二步:A蛋角色创建与基础移动
**操作步骤**:
添加角色「A蛋」→ 添加3个造型(造型1/造型2/造型3)→ 切换到代码页签 → 创建自定义积木「计算速度」。
**代码实现**:
```scratch
define 计算速度 (x) (y)
if <not <mouse down?>> then
point towards (蜘蛛网 v)
turn right (90) degrees
go to x: (0) y: (0)
move ((speedX) * ([sin v] of (direction) )) steps
move ((speedY) * ([cos v] of (direction) )) steps
set [speedX v] to (x position)
set [speedY v] to (y position)
go to x: (x) y: (y)
end
```
**逻辑解析**:
- 当鼠标未按下时触发移动逻辑
- 通过转向90度确保移动方向与点击方向垂直
- 使用三角函数计算X/Y轴移动距离
- 将当前坐标作为新的目标位置
### 第三步:A蛋交互逻辑实现
**操作步骤**:
切换到「A蛋」角色 → 添加事件「当按下左键」→ 切换造型1/2 → 广播「消息1」。
**代码实现**:
```scratch
when flag clicked
set rotation style [all around v]
forever
if <mouse down?> then
switch costume to (造型1 v)
else
switch costume to (造型2 v)
end
end
```
**逻辑解析**:
- 持续检测鼠标状态切换造型
- 通过广播通知其他角色更新镜头偏移量
### 第四步:蜘蛛网轨迹绘制
**操作步骤**:
添加角色「蜘蛛网」→ 设置初始位置(X:40, Y:120)→ 绘制轨迹积木。
**代码实现**:
```scratch
when flag clicked
set [webx v] to [40]
set [weby v] to [120]
forever
switch costume to (造型1 v)
wait until <mouse down?>
switch costume to (造型2 v)
go to (A蛋 v)
point towards (鼠标指针 v)
repeat until <not <mouse down?>
move (20) steps
set [webx v] to ((x position) - (viewX))
set [weby v] to ((y position) - (viewY))
end
end
```
**逻辑解析**:
- 鼠标按下时开始绘制轨迹
- 每次移动20像素并实时更新坐标差值
- 通过减去镜头偏移量(viewX/Y)实现动态追踪
### 第五步:背景大楼隐藏控制
**操作步骤**:
添加角色「背景大楼」→ 设置固定位置 → 添加广播接收积木。
**代码实现**:
```scratch
when flag clicked
hide
go to [back v] layer
when I receive [消息1 v]
set x to ((viewX) mod (100))
set y to ((viewY) mod (180))
stamp
```
**逻辑解析**:
- 初始隐藏背景建筑
- 通过模运算实现循环滚动效果
- 每次滚动时重新生成位置坐标
### 最终演示与截图
**操作步骤**:
运行项目 → 截图保存最终效果(包含动态轨迹、造型切换和音效反馈)。
**代码逻辑总结**:
1. 镜头偏移(viewX/Y)驱动所有动态元素
2. 自定义积木「计算速度」封装三角函数运算
3. 消息广播「消息1」实现跨角色通信
4. 变量更新(webx/weby)控制蜘蛛网绘制

## 🚀 挑战一下
尝试修改「蜘蛛网」的绘制速度(当前20像素/帧),改为30像素/帧,观察轨迹变化效果。
## 🎉 结语
完成本项目后,你已掌握:
✅ 变量与全局坐标控制
✅ 消息广播实现多角色交互
✅ 自定义积木封装复杂逻辑
✅ 动态背景与镜头偏移
建议将项目保存为「A蛋_v1.0」并分享到Scratch社区,期待看到你的创意改进!