[cocos2d-x·分享]拓展CCAction-阿基米德螺线

本文介绍了一个用于创建阿基米德螺线动画效果的动作类实现,旨在简化动画制作过程,使开发者能够轻松地在游戏或应用中添加类似特效。文中详细解释了如何继承CCActionInterval并实现所需的startWithTarget和update方法,提供了实现该动画的代码示例,并讨论了实际应用场景,如在《宠物联萌》游戏中用于召唤特殊宠物的界面设计。

稍稍扯点题外话,6月那时候其实我想自己出来搞个工作室试试能不能赚点小钱,工作室名称预定是《剑世界工作室》(Sword World),不过后来因为家庭原因嗝屁了,orz。工作室肯定要有Logo动画啦,我之前设想是10把剑绕着屏幕中心飞入,相击后播放斩击闪光,斩出工作室名字,效果大概如图:

 

只是简单地飞入感觉有点单调,所以我想设计10把剑呈螺旋飞入,这样效果比直接飞入会好一些。有了想法,网上翻了一些资料,觉得“阿基米德螺线”很符合需求,于是就有了写一个执行“阿基米德螺线”动作的想法。

(科普)

  写动作的话,我觉得应该要写得跟CCMoveTo一样,别人只要runAction就可以了,不需要做其他操作,这样用起来才方便。首先当然像CCMoveTo一样继承CCActionInterval,因为“阿基米德螺线”也是延时动作。第一个目标是,别人用起来要想用CCMoveTo一样简单,不会有任何违和感,所以“阿基米德螺线”这个类会有这么一个方法:

static MMArchimedesSpiralTo* create(float duration, const cocos2d::CCPoint& position);

Duration是执行时间,position是要移动到的目标点,跟CCMoveTo一样吧,很简单的。

 

  个人理解,写动作要实现CCActionInterval2个方法:startWithTargetupdatestarrWithTarget主要是初始化一些动作变量,比如起始角度,半径之类的。update则是根据你的动作变量每帧更新target的坐标。

 

  知道这点之后,只要把“阿基米德螺线”的计算公式放到update里就可以了,通过公式计算出偏移量,然后将他与“目标点”坐标相加,再给target来个setPosition即可,具体实现可以看我下面给出的代码。

 

  这个动作感觉做特效用得比较多,《宠物联萌》召唤特殊宠物的界面,我就是这样搞的,5个碎片旋入到屏幕中心,渐渐消失,蹦出粒子效果,然后出现特殊宠物。

 

  第一次写Action类的博文,感觉很多地方词不达意,所以这次字数不多,其实这个动作也很简单,想学习的话看看代码就好了,如果有错请帮忙修正,谢谢哈。这个是TestMaria中测试“阿基米德螺线”的demo,效果感觉还是挺不错的:

 

 

最后,这个是下载地址:

http://files.cnblogs.com/j1223jesus/%E9%98%BF%E5%9F%BA%E7%B1%B3%E5%BE%B7%E8%9E%BA%E7%BA%BF.zip

转载于:https://www.cnblogs.com/j1223jesus/archive/2012/10/22/2734694.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值