大数跨境
0
0

开箱即用的贝塞尔曲线控件:让游戏动画更丝滑

开箱即用的贝塞尔曲线控件:让游戏动画更丝滑 EcoCosy优可丝
2025-05-28
4
导读:拖拽组件、设置终点,轻松实现优雅的曲线动画效果。

背景

在游戏开发中,动画元素的移动轨迹直接影响游戏的表现力。

传统的线性移动虽然实现简单,但往往显得机械僵硬。成熟游戏普遍采用贝塞尔曲线来实现流畅自然的移动效果,但实现起来较为复杂。

于是我想做一个好用的控件,方便按照贝塞尔曲线移动元素。

我的要求非常简单:

  • 使用方便

只需指定终点,控件就可以按照起点和终点计算出一条二阶曲线(二阶已经足够),并使绑定的元素 node 按照计算出的轨迹运动。

  • 控件支持各种调参

可以通过调整控制点的一些属性,实现自定义曲线,并带有一定的随机性。

基于此两点目的,我开始了控件制作。

实现原理

说到贝塞尔曲线,相信不少人和我一样会想起高中数学课本。但别担心,我们已经把复杂的数学原理封装成了简单易用的接口!

简单来说,一条二阶贝塞尔曲线由三个关键点决定:

  • P0:起点
  • P2:终点
  • P1:控制点(决定曲线的弧度)


为了方便理解,我们还需要加入几个参数:

  • Q0:P0 到 P1 上的动点
  • Q1:P1 到 P2 上的动点
  • B(t):Q0 到 Q1 的动点

Q0 和 Q1 在 P0P1 和 P1P2 上是按比例移动的,当 Q0 移动到 P0P1 的中点时,Q1 也恰好移动到 P1P2 的中点, Q0 移动到 P1 时,Q1 也恰好移动到 P2 。

由于 B(t) 是 Q0 到 Q1 的动点,B(t) 的轨迹,就是以 P0 为起始点,以 P2 为终止点。

于是,主体思路就是:

  1. 当拿到目标坐标后,先按照控制点参数,计算出这次贝塞尔曲线的控制点。

  2. 由于有了起点 P0,控制点 P1,终点 P2,就可以算出 P0P1+P1P2,可以粗略认为是总路程(其实总路程比该值小),通过 路程/速度,就可以算轨迹运动时间。

  3. 然后在 update 的循环中,不断计算贝塞尔曲线当时点的位置(当然,还需要考虑旋转,这里需要计算切线来调整角度,还要考虑角度是否平滑过渡等)。

使用方法

虽然实现起来比较复杂,但最终使用起来却非常简单。

操作如下:

  • 一拖:将 BezierMove 组件拖入目标节点
  • 二设:调用 BezierMove.moveTo 方法,传入终点坐标即可
  • 可以设置其他参数,来实现自定义与随机性配置,例如:
    • 控制点偏移率
    • 控制点随机系数
    • 控制点方向
    • 缓动函数
    • 运动速度
    • 角度平滑系数

可以调整的参数如下图所示。

控件优势

1. 智能路径系统

  • 智能路径生成引擎
  • 自动构建二阶贝塞尔曲线
  • 实时动态锚点修正
  • 支持 2D 节点运动
  • 完美适配 Spine/DragonBone 动画:只需设定终点坐标,自动生成符合物理直觉的优雅曲线

2. 参数级操控系统

  • 40+预设缓动函数(弹性/回弹/脉冲等)
  • 智能速率适配(FixSpeed模式)
  • 轨迹曲线高度可控可随机(控制点偏移率,随机系数,方向)
  • 可视化曲线路径

3.开发者友好

  • 即插即用架构、组件化设计、3.8 全版本兼容、源码级控制
  • 包含对应 Demo、源码效果,以及视频教学,方便使用者快速上手

资源获取

  • Cocos Creator 版本:3.8.6

  • 资源获取:

https://store.cocos.com/app/detail/7647

  • 演示视频:

https://www.bilibili.com/video/BV1yiVzzMEXi

  • 教学视频:

1. 飞剑:https://www.bilibili.com/video/BV1yKVpz9EzQ

2. 飞星1:https://www.bilibili.com/video/BV1qnVpz5Eo4

3. 飞星2:https://www.bilibili.com/video/BV1RCVHzzE9y

  • 在线体验:

1. 桌面网页版 Demo:https://cocos-resources.dawnwindstudio.top/bezier-move 

2. 手机网页版 Demo:https://cocos-resources.dawnwindstudio.top/bezier-move-mobile

写在最后

游戏开发中,细节决定成败,希望这个控件可以帮你轻松实现优雅的游戏动画效果。

有任何问题或建议,欢迎在评论区留言交流!

欢迎关注 Cocos 官方公众号,第一时间获取更多实用信息与技术干货。

【声明】内容源于网络
0
0
EcoCosy优可丝
1234
内容 703
粉丝 0
EcoCosy优可丝 1234
总阅读42
粉丝0
内容703