<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Timing on PlumePHP</title><link>https://plumephp.com/tags/timing/</link><description>Recent content in Timing on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sat, 02 May 2026 10:18:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/tags/timing/index.xml" rel="self" type="application/rss+xml"/><item><title>Phaser 音游判定系统：节拍、延迟校准和判定窗口不能靠感觉</title><link>https://plumephp.com/phaser-rhythm-game-timing-window-2026/</link><pubDate>Sat, 02 May 2026 10:18:00 +0800</pubDate><guid>https://plumephp.com/phaser-rhythm-game-timing-window-2026/</guid><description>&lt;h2 id="为什么音游最怕看起来差不多"&gt;为什么音游最怕“看起来差不多”&lt;/h2&gt;
&lt;p&gt;很多团队第一次用 Phaser 做音游，会把音符下落写成一个普通动画：每帧根据 &lt;code&gt;delta&lt;/code&gt; 改变 &lt;code&gt;y&lt;/code&gt;，音符碰到判定线时玩家点击就算命中。这个方案在演示机上看起来能跑，但只要换一台手机、切到后台再回来、蓝牙耳机多了几十毫秒延迟，判定立刻变得飘。玩家不会说“你的 &lt;code&gt;delta&lt;/code&gt; 积累误差了”，他只会说“这游戏打起来不跟手”。音游系统的核心不是 Sprite 下落，而是让所有画面、输入、音乐和判定都围绕同一个可信时间轴工作。&lt;/p&gt;</description></item><item><title>Phaser 烹饪节奏小游戏：火候窗口、步骤队列和评分反馈要有手感</title><link>https://plumephp.com/phaser-cooking-timing-minigame-2026/</link><pubDate>Thu, 05 Mar 2026 18:06:00 +0800</pubDate><guid>https://plumephp.com/phaser-cooking-timing-minigame-2026/</guid><description>&lt;h2 id="为什么这个系统不能临时拼"&gt;为什么这个系统不能临时拼&lt;/h2&gt;
&lt;p&gt;玩家在餐车关卡里切菜、翻炒、收汁、装盘，每一步都有短暂最佳窗口；做得好会得到香气特效，做晚了会糊锅。&lt;/p&gt;
&lt;p&gt;真实项目里，最容易出问题的不是第一版能不能跑，而是后续能不能解释、能不能复现、能不能被内容团队稳定使用。如果每个按钮自己倒计时，步骤之间会互相抢状态，暂停、倍速、失焦和教学都会让火候窗口漂移。 这类系统一旦和奖励、存档、关卡进度或玩家输入有关，就不能只写在某个 Scene 的按钮回调里。更稳的做法是把规则层、表现层和调试层拆开：规则层只处理数据和状态，表现层负责 Phaser 动画、粒子、音效和 UI，调试层负责把中间状态暴露出来。&lt;/p&gt;</description></item></channel></rss>