cocos2d-x学习笔记(五)仿真树叶飘落效果的实现(精灵旋转、翻
cocos2d-x学习笔记(五)仿真树叶飘落效果的实现(精灵旋转、翻转、钟摆运动等综合运用)
分类:C++学习cocos2d-x
2012-07-22 23:196775人阅读评论(5)收藏举报
ufolr原创,转载请注明:
初始化树叶精灵的设定:
转载自ufolr的博客 原文连接:http://www.52php.cn/article/p-mrdyjsly-dt.html
最近项目中需要一个落叶的效果,本来想用粒子特效来实现,但是几经调试,虽然调出了落叶的效果,但是并不是十分理想,最大的不足就是落叶是平面的,没有立体感,虽然把落叶做小之后却是立体感的感觉会有所缓解,但总不能把树叶无限的缩小吧,而且立体感的缺失在粒子特效中确实是一个始终存在的问题。作为一个最求品质的程序猿,最终还是决定自己设精灵动作来实现。
在分析了粒子特效实现的原理并在国内外论坛上爬了半天,最后边实验边修改,终于完成了一个可行的仿真感较强的立体的落叶效果,现在就拿出来跟大家分享一下。 原理->树叶飘落动作分析: 树叶下落过程分解为:下落+摆动叶片自传。 也就是只要将这三个动作实现,并同时执行就可以实现树叶飘落的效果。 下面就拿出代码具体解析实现过程: 老规矩,先上.h的内容,.h就不多解释了:
接下来是具体的实现,为了我们能不断的产生自然、随和的落叶,我们分三步来完成: 1:第一次初始化;2:落叶动作的实现;3:下落动作完成重新设定落叶开始。 上代码,先看看用到的头文件: #include<iostream> <spanstyle="font-size:12px;">boolLeaf::init() 将精灵的锚点设定在其高度的3倍的位置,加上旋转动作后,叶片会产生单摆的动作效果。再加上下落的动作,就会有树叶飘落的感觉了。 <spanstyle="font-size:12px;">//叶子飘落动作 现在为了使我们的落叶能够源源不断的产生,我们还需要让落叶的产生和消亡循环起来: //重置叶子的位置 这样3d仿真的落叶的效果就基本实现了,为了节约时间,这里只写了2片叶子的情况,多片叶子的情况可以举一反三,多加几片叶子就行。这里需要注意的是在使用CCOrbitCamera来实现三维空间的翻转时,由于openGL绘图的关系,我们得将精灵的深度设置上浮,以避免openGL绘图时精灵的部分被后面的色彩遮挡。 解决遮挡问题可以直接关闭深度测试CCDirector::sharedDirector()->setDepthTest(false); 也可以设置精灵VertexZ上浮spriteLeaf->setVertexZ(60); 如果你的程序不需要深度测试,你大可以直接关了它,但是你不能确定是的程序是否每个地方都没有用到深度测试,所以,推荐设置VertexZ值来避免你的精灵被遮挡。VertexZ值的大小为你的精灵被挡住部分的像素值。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |