星星风车闯关 · 保存控件 + 世界 Y 轴旋转
版本：2026-10-05

直接试玩
用 Roblox Studio 打开同目录的 Star-Y-Studio.rbxl，按 Play。
完整工程已经安装 StarSpin、StarGame、StarHUD，不要重复安装。
原始 star 和 Stair 存在 ServerStorage > SavedStarControls，关卡使用它们的副本。
使用自己的名字另存本地 .rbxl，再继续编辑。

游戏目标
从白色 SpawnPad 出生，踩蓝色 StartPad，走上彩色 Stair，沿窄桥躲开 star，抵达绿色 FinishPad。
碰叶片或掉到红色 KillPlane 会失败并重生。通关后在终点按 E，或使用屏幕交互提示，再来一局。
每位玩家的状态独立；同一局只计一次通关。本次试玩次数在 Stop 或离开后重置，没有长期存档。

从保存控件重新搭建
1. 新建 Baseplate，另存为自己的本地工程。
2. 在 Toolbox > My Models 插入 star 和左边那个 Stair，各一次，直接放在 Workspace 下。
   star 全小写，没有末尾 t；Stair 首字母大写。
   本教程使用四根彩色圆柱组成的 star，以及四层彩色 Stair。
3. 保持编辑模式，不要 Play。通过 Window > Script 打开 Command Bar。
   复制 01-CreateStarCourse.luau 全文，执行一次。多行命令栏可用 Ctrl+Enter 或右侧 Run。
   小助手保留原件，使用副本搭建 StarCourse。若已存在 StarCourse，请用现有路线或另开新场景。
   此代码只用于编辑模式搭建，不能作为普通运行 Script 安装。
4. 在 Workspace > StarCourse > star 里面创建普通 Script，命名 StarSpin。
   清空默认内容，复制 02-StarSpin.server.luau 全文。
5. 在 ServerScriptService 创建普通 Script：StarGame，复制 03-StarGame.server.luau。
6. 在 StarterPlayer > StarterPlayerScripts 创建 LocalScript：StarHUD，复制 04-StarHUD.client.luau。
7. 每种运行脚本只放一份。保存，Play，先检查旋转，再测试一整局。

必学：star 绕世界 Y 轴旋转
star 是四根交叉的彩色圆柱，每根 Size=12,2,2；四根圆柱的两端形成八个尖端。
四根一起绕竖直的世界 Y 轴转。模型轴心位于 0,13.2,0，PrimaryPart 为空，使用居中的 WorldPivot。
所有部件 Anchored=true，防止控件受重力影响散开。
CFrame.Angles(0, angle, 0) 的第二个参数是 Y。
center 只保存初始中心位置，originalRotation 保存初始朝向。
关键一行：
star:PivotTo(center * CFrame.Angles(0, angle, 0) * originalRotation)
新增旋转在原朝向之前相乘，保证绕世界 Y 转；中心不动，原有模型朝向保留。
速度以度/秒写，math.rad 换成弧度，乘 deltaTime 得到每帧增量。
SPEED=30 约十二秒一圈；60 约六秒一圈；-60 反转；0 停止。
先 Stop，在编辑模式改数字，再 Play 对比。
注意：搭建文件中圆形终点平台绕 Z 转 90 度，是把圆柱放平，与星星绕 Y 转是两件事。

规则与检测
出发、终点和下方失败平面使用 Touched。
星星由 PivotTo 移动，用 GetPartsInPart 检查叶片是否与角色重叠。
四根叶片名为 Blade1 到 Blade4；CanCollide=false、CanTouch=false、CanQuery=true。
默认约每 0.05 秒检查一次，先用 30–60 度/秒试玩。高速机关需要改进采样检测。
终点先把 Playing 改成 Finished，再加次数，避免脚和腿连续接触时重复计数。
StarHUD 读取玩家自己的 CourseState 和 Finishes，显示下一步提示。

已完成的 Studio 实机检查（2026-10-05）
- 打开用户保存的 star，插入 My Models 中左边的 Stair，保留原件后搭建关卡。
- 单人 Play：约 0.5 秒转 29.08 度，测得旋转轴约 (0,1,0)，旋转中心位移为 0。
- 在引擎内移动测试角色触发真实接触：未出发不能通关；出发后可通关；重复碰终点只计一次。
- 在客户端实际按 E，重新出生，状态回 Ready，本次试玩通关次数保留。
- 碰星星和落到失败平面均使角色失败；两种情况都已检查自动重生回 Ready。
- 真实编辑、脚本和 Play 截图已放入配套网页。
以上是机制检查，没有把自动移动测试角色当成手动走完全程；双人和手机仍需分别实测。

自己的验收清单
□ 四根圆柱一起绕 Y 转，中心不跑偏。
□ 分别试 SPEED=30、60、-60、0。
□ 手动从起点走到终点，检查跳跃距离和观察空间。
□ 未出发不能通关，同一局反复碰终点不重复计数。
□ 碰叶片、掉下去都能重生；通关后按 E 可以重玩。
□ 两位玩家分别玩，状态和次数互不覆盖。
□ 手机模拟与条件允许时的真实设备测试。
□ Stop 后保存本地工程，重新打开再试玩。

官方参考
https://create.roblox.com/docs/studio/pivot-tools
https://create.roblox.com/docs/reference/engine/datatypes/CFrame
https://create.roblox.com/docs/reference/engine/classes/RunService#Heartbeat
https://create.roblox.com/docs/reference/engine/classes/WorldRoot#GetPartsInPart
https://create.roblox.com/docs/workspace/collisions
