cocos贝塞尔曲线CCBezierTo,物体以弧形轨迹运动

40 篇文章 0 订阅
36 篇文章 0 订阅

cocos实现贝塞尔曲线CCBezierTo,物体以弧形轨迹运动

设备/引擎:Mac(11.6)/cocos

开发工具:Xcode(13.0)

开发语言:Objective-c/c++

开发需求:让物体以弧形进行运动

cocos对贝塞尔曲线的定义如下

typedef struct _ccBezierConfig {
    //! end position of the bezier
    CCPoint endPosition;
    //! Bezier control point 1
    CCPoint controlPoint_1;
    //! Bezier control point 2
    CCPoint controlPoint_2;
} ccBezierConfig;

原理也不难,只需要自己确定好初始点位置、终点位置,中间点位置看具体需求,若需要更加均匀舒缓,则将中间两点位置均匀分布在始终点之间,若需要前面运动急促,后面运动舒缓,则将第一个点(controlPoint_1)与始发点离的近一点,第二个点离终点远一些,且三个点的高度无太大差别,依次可以演化更多的运动形式,具体以需求为准。

三个点都需要进行设置,未设置点则元素会直接默认为(0,0),简单测试一下就可以明白。
以下为我设置的参数

	flybird->setPosition(ccp(500,600));				//初始点
    ccBezierConfig bezier;                          //实例化
    bezier.controlPoint_1 = ccp(700, 530);          //第一个点
    bezier.controlPoint_2 = ccp(900, 530);          //第二个点
    bezier.endPosition = ccp(1200, 600);            //终点

之后就可以调用CCBezierTo来控制运动的速度,当然,如果想要控制运动过程中的角度,可以继续调用CCRotateTo/CCRotateBy来控制元素的运动角度。
部分代码如下

flybird->runAction(CCSpawn::create(CCBezierTo::create(4.0,bezier),
                       	   CCRotateTo::create(3.5, -50),
                           NULL));

贝塞尔曲线原理其实不难,还有疑问的可以在代码中设置一下,看看效果,多改改值就可以明白每部分的意思。

希望能给大家带来帮助!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GameTomato

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值