下载 App

【开发者日志#3】《星序 》- 轨迹采样与发光体预警机制

6 小时前综合
导言:
上期把小球跑通了,确定了移动和冲刺的基础手感(虽然冲刺方向还没定死)。
这次,游戏最核心的机制终于要开始动工了:如何记录玩家的轨迹,生成使用简单的音效,并让星光在正确的时间、正确的位置闪烁。这一篇主要分享我在实现“轨迹采样”和“发光体预警”时踩过的坑。
本期进展:
确定了冲刺方向:综合了上期的风险,我最终决定还是采用“朝当前移动方向冲刺”。如果玩家没有按移动键,按空格则朝面朝方向(基于上一次移动方向)冲刺。这么定是为了后续让光线方向更有规律,减少不可控的随机感。
实现了轨迹采样器:为了解决上期提到的物理帧不同步问题,我放弃在 Update 里按时间记录,而是改成了按移动距离采样。具体来说,玩家小球每移动 0.5 个单位的距离,就在当前位置记录一个轨迹点。这样无论帧率怎么波动,发光体的间距都是均匀的。
星光占位与预警逻辑:在轨迹点生成了星光占位(先用简单的2D彩色圆形sprite代替)。它初始是透明的,然后闪烁 3 次,每次闪烁伴随一个简单的测试音效。
音效生成:暂时先使用Audacity采用正弦波880HZ振幅0.6与正弦波2640HZ振幅0.4的两个轨道淡出效果混合音效作为基准音效,其他音效以此扩展。
TapTap
记录与射线测试:在发光体第一次闪烁时,记录下玩家小球当时的位置。闪烁结束后,用 LineRenderer 画一条测试光线,从发光体位置射向记录的位置,停留 1 秒后消失。
对象池初尝试:为了避免频繁 Instantiate 和 Destroy 造成卡顿,我开始引入简单的对象池。光线消失后,连同发光体一起被 SetActive(false),并放进队列等待后续处理。
问题与风险:
闪烁时机的判定非常折磨:让发光体“闪烁 3 次”听起来简单,但为了配合音效和光线射出,实际逻辑写起来有点绕。特别是如果玩家在闪烁期间跑得很快,光线射向的到底应该是“第一次闪烁那一瞬间的位置”,还是“闪烁开始时的位置”?目前我取的是瞬间位置,但还需要测试手感。
对象池的状态重置:因为发光体身上挂着闪烁动画、LineRenderer 和音效,放回池子再取出来时,必须严格重置所有状态,否则会出现上一次的光线还没消失,新的就射出来了,或者音效重复播放的 Bug。
视觉噪音隐患:随着小球移动,屏幕上出现的发光体越来越多。虽然现在只有2Dsprite,但未来加上真实美术后,如果同时有 10 个发光体在闪烁,屏幕会非常乱。可能后续需要限制同屏发光体的最大数量,或者让它们在半透明和实体之间更柔和地过渡。
风险:如果轨迹采样逻辑有 bug(比如漏记录或记录位置偏差),后续光线回放时会出现“我明明没经过那里,为什么光线射向那里”的强烈不公感,必须在这一步把位置记录精准。
下期计划:
实现完整的队列回放机制:累计到一定数量的光线后,按顺序从队列中取出并依次启用,同时播放对应的音效。
加入碰撞检测:小球碰到光线后的反馈(是扣血、重置位置还是直接死亡?下期我会定下来)。
加入简单的测试音阶:给每个发光体分配不同的音高,让回放时形成一段有规律的旋律,看看听感如何。
继续优化移动参数,确保躲避弹幕时的手感顺滑。
【开发者日志#5】星序 拼上外壳:UI、游戏循环与“信标”驱动力截图
【开发者日志#5】星序 拼上外壳:UI、游戏循环与“信标”驱动力
导言: 上期实现队列回放和碰撞后,我发现了一个致命漏洞:玩家站在原地不动,就不会产生新的发光体,等回放结束就彻底安全了。这显然不行。 在有了基本的底层机制后,现在开始搭建游戏的外壳:开始界面、血量UI、失败判定,以及——一个逼迫玩家在场上持续移动的理由。 本期进展: 正式的UI与游戏循环:这次我放出了之前藏了一段时间的UI系统。目前有简单的开始界面(按任意键开始)、游戏内的血量条、当前波次计数,以
官方
1 赞
开发者日志#4】《星序》- 攻击逻辑:光线队列回放与碰撞判定截图
开发者日志#4】《星序》- 攻击逻辑:光线队列回放与碰撞判定
导言: 上期实现了星体的预警、音效和单根光线的测试。但一个星体不够,需要能够产生紧迫感的体验。 这次,我把之前丢进队列的光线按顺序取出来,让它们在玩家面前依次重放,并加上了真实的碰撞判定。小球终于体验到了被自己过去的轨迹“追杀”的感觉。 本期进展: 完成队列回放机制:我用 Queue<RayRecord> 存储光线数据(起点位置、目标位置、音效索引)。当累计的光线达到 5 个时,自动触发一次“回放
官方
2 赞
【开发者日志#6】星序 - 模型就绪:模型实装、图鉴与得分系统截图
【开发者日志#6】星序 - 模型就绪:模型实装、图鉴与得分系统
导言: 上期把游戏的UI和核心循环跑通了,但满屏幕的纯色方块和圆圈实在有些“寒酸”。在第五篇日志的结尾,我提到已经在Blender里开始制作模型。 这次,终于到了把“占位符”全部删掉,换上真正美术资产的时候了。同时,为了增加重复游玩的动力,我还实装了图鉴和得分系统。 同时为游戏场景的星空背景特意在blender中制作了三渲二风格的星空天空盒hdr资产,以及游戏图标的制作。 本期进展: Blende
官方
1 赞
【开发者日志#2】《星序》 - 先让小球动起来:2D原型与移动手感截图
【开发者日志#2】《星序》 - 先让小球动起来:2D原型与移动手感
导言:上次聊了核心想法:玩家移动产生发光体,发光体记录位置,之后回放成光线打自己。 这次开始动手。因为整个机制都建立在“玩家怎么动”上,所以我先做最底层的一步:2D场景和小球控制。 本期进展: 首先在Unity中创建了项目,并规划好了文件结构,在场景中创建了一些可能后续需要的空对象。 确定了 2D 俯视正交视角,搭建了一个纯色原型场景,用来测试移动和后续弹幕。 创建了玩家小球:Rigidbody2
官方
2 赞
【DevLog #1|聚光灯21天】《星序》—— 在弹幕里长出一段旋律
《星序》开发日志 #1|以微小规则,生长出独一无二的涌现旋律 作为新手中的新手,Unity 才自学半个月,就想来聚光灯 21 天挑战碰碰运气。 看到本次主题「涌现」,我构思了一套玩法。深色 2D 背景里,各色星光不断浮现,闪烁几下,再伴随对应音符射出光线掠过玩家。积攒一定数量星光后,它们会按顺序接连触发,依次亮起、播放音符并射出射线,玩家需要记住规律躲避。 最开始我设想的是一次性整体爆发,不过评估
官方
2 赞
00:45
【开发者日志#7】星序 - 游戏落地:完整游戏上线截图
【开发者日志#7】星序 - 游戏落地:完整游戏上线
导言: 上一期完成美术资产替换、图鉴与得分系统之后,视觉和收集框架已经落地。这次迭代重构了游戏 UI 布局,拓展了游玩模式,并且,《星序》现在正式开放试玩啦! 本期进展: UI 布局重构:重新调整游戏内 HUD、结算面板、图鉴弹窗的排布。旧版界面元素比较松散,容易遮挡游戏画面;本次缩小 UI 占比,分数、提示信息放在画面边角,最大程度不干扰玩家观察星光光线,同时制作了多模式选择主菜单。 多游戏模式
官方
2 赞