最不满意的地方是动作僵硬,画面很粗糙,玩法也很简单,不是很有趣

来自夹夹 QQ 群讨论,审核后公开 · 。查看原始讨论

提问

最不满意的地方是动作僵硬,画面很粗糙,玩法也很简单,不是很有趣

回答

回复 群友 6814

图看完了,信息很全。先给结论:

僵不是因为你的代码糙,是你两条腿都没了:人物没有骨骼系统,全靠脚本改 MeshInstance3D 的 position/rotation/scale,这在数学上就不可能不硬——程序驱动只能做位移和整体倾倒,做不了关节转动、重心转移和落脚修正。视觉粗糙也不是"没调好",是后处理一个都没开(你自己写了没启用 SSAO/Glow/雾/SSR,只设了背景色和方向光),那画面就是纯色块打平光,必然塑料。

按你三个不满意点排优先级:

一,动作僵硬(最该动,性价比最高)
现在的路子是死路,不要再在脚本驱动上打磨参数了。换成人形骨骼动画:

  • 人物从 BoxMesh 拼装改成单一低模人形加 Skeleton3D,Mixamo 或 Godot 官方 humanoid 都行,统一一套骨架。
  • 关键帧动画切进去,用 AnimationTree 做状态机和 BlendSpace,走→跑→停要带混合时间,别硬切。
  • 你之前说的翻滚、后仰、死亡这些一次性动作,用 AnimationPlayer 播完回状态机,不要再靠改 rotation 演。

只有这一步做完,"僵硬"才会真的消失,其他都是微调。

二,画面粗糙(半天就能见效)
你已经建了 WorldEnvironment,只差把开关打开,按这个顺序:

  • SSAO + SSIL 开上,体素场景的体积感全靠这个。
  • 加体积雾,颜色靠近天空色,能立刻把远处区块的方块感糊掉。
  • 加很轻的 Glow,阈值调高一点,只让亮面溢出,不要全屏发光。
  • 开 SDFGI(或者退一步用轻量 GI),16×16 区块规模完全吃得下。
  • 色调映射你现在设了但没调参数,改成 ACES 加大约 1.0~1.2 曝光,对比度和饱和度会一起变好看。

另外你现在地形用 StandardMaterial3D 加图集,加两件事:贴图开各向异性过滤、开 mipmap,再考虑三平面映射或者根据法线做颜色微扰。方块世界纯色平面永远死板。

三,双面材质这个决定要改
你为了避免背面剔除的绕序问题直接用了双面,代价是阴影和光照效果都变脏——法线判断会出错,AO 也不对。正确做法是生成网格时统一三角面绕序(顺时针逆时针跟你用的坐标系一致就行),然后关掉双面。这个改完画面会干净一档,尤其配合 SSAO。

四,玩法简单、不有趣
这条不是优化问题,是范围问题。你现在的 demo 同时在做体素地形、多个敌人、翻滚、死亡、枪械、箱子,每样都只做到能跑。建议这一版只保留一个核心循环:比如"采集方块 → 建造/合成 → 造出一道墙挡住敌人"。一圈闭环跑通再加内容,否则东西越多越像玩具。

版式上还有一个小建议:16 个区块生成 MeshInstance3D 目前没问题,等地图大了再换 MultiMesh 或者网格合并,现在别提前优化。

要我按这个顺序给你一份具体的改动清单吗?可以先从骨骼动画那份开始——你现在人物是程序生成的 BoxMesh 组合,改成 Skeleton3D 需要先重构角色节点的组织方式,这块我可以给你讲具体怎么拆。