跳到主要内容

案例一:金币图片与旋转序列帧

这个案例解决固定视角 UI 奖励资源。制作时使用三维模型,交付时只需图片,游戏中不必实时渲染金币模型。

实际生成的透明金币

需求与规格​

项目实际交付
源工程coin.blend,含模型、灯光、相机、旋转关键帧
静态图片coin.png,512×512 RGBA
动画16 张256×256透明帧,24 fps,约0.667秒一圈
图集coin-atlas.png,1024×1024,4×4格
坐标清单coin-atlas.json,左上原点,逐行排列

金币源模型为2,032三角形。这是离线渲染模型,运行时只使用图片,因此其面数不直接成为游戏每帧的三角形开销。

制作过程​

  1. 用圆柱和正面星形建立轮廓,边缘倒角让小尺寸下的高光可读。
  2. 设置金属外观与固定灯光,使用相机统一画面与留白。
  3. 开启透明背景与RGBA输出,渲染512px主图。
  4. 在一圈中采样16个不同角度,省略重复闭合帧,保持每帧画布一致。
  5. 以4×4排版形成图集,输出每帧矩形和播放信息。

打开源文件看什么​

先在 Outliner 查看金币、相机与灯光;再观察材质参数和旋转曲线。改变金属度或粗糙度时,保持灯光不变以便比较;改变相机时,注意是否裁掉旋转过程中的边缘。

重新生成单项:

"/Applications/Blender.app/Contents/MacOS/Blender" \
-b --python examples/blender/generate_assets.py -- coin

接入 Cocos​

图集 JSON 是本站的帧矩形数据,不是 Creator 的专用图集格式。示例工程加载图集纹理,按256×256格创建16个 SpriteFrame,再按24fps切换。

// frames 已从图集创建;总时长约 16 / 24 秒。
elapsed += dt;
sprite.spriteFrame = frames[Math.floor(elapsed * 24) % 16];

金币沿路径飞向计数器、缩放和收集反馈由引擎控制;余额增加由业务逻辑控制。它们可以与帧动画组合,不能把美术帧序列当成账务状态。

验收与常见反馈​

  • 检查PNG实际含透明与不透明像素,放到深浅背景看边缘。
  • 检查16帧数量、尺寸、图集顺序以及固定中心。
  • 连续循环观察,确认没有重复闭合帧造成的停顿。
  • 在游戏实际显示尺寸检查星形与边缘是否清楚。
第7帧播放时金币向右跳了2px,请比较该帧的画布、
视觉中心和裁剪偏移。保持所有帧画布一致,
修复后重新生成图集并验证顺序,不要只调整引擎节点位置。

下载:金币PNG、图集、帧坐标、源工程。运行示例见Cocos 接入,事实记录见验证页。