也是从网上看来的,这里记录一下
原理是利用贝塞尔曲线+弓箭的旋转来造成弓箭的抛物线效果。
贝赛尔曲线:
ccBezIErConfig bezIEr; bezIEr.controlPoint_1 = start; bezIEr.controlPoint_2 = ccp(start.x+(end.x-start.x)*0.5,start.y+(end.y-start.y)*0.5+100); bezIEr.endposition = ccp(end.x,end.y); float duration = 1.0f; CCBezIErTo *actionBezIEr = CCBezIErTo::create(duration,bezIEr);
其中controlPoint_1是起始点,endposition是贝塞尔曲线动画的结束点,最重要的controlPoint_2是曲线的走向,决定了曲线的最高点。想深入学习贝塞尔曲线的同学请看这里: http://www.jasondavies.com/animated-bezier/
然后是旋转动画:
float angle = <span >45.0f</span><span >;</span> CCRotateto *actionRotate =CCRotateto::create(duration,angle);
CCSpawn* actionSpawn = CCSpawn::createWithTwoActions(actionBezIEr,actionRotate);
好了,大功告成。
但是这样做了之后,感觉射箭效果仍然不理想,毕竟是投机取巧的方法。为了优化视觉效果,可以调整动画播放的速度。
总结以上是内存溢出为你收集整理的cocos2dx射箭等抛射物的简单解决方案全部内容,希望文章能够帮你解决cocos2dx射箭等抛射物的简单解决方案所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)