cocos2dx射箭等抛射物的简单解决方案

cocos2dx射箭等抛射物的简单解决方案,第1张

概述也是从网上看来的,这里记录一下 原理是利用贝塞尔曲线+弓箭的旋转来造成弓箭的抛物线效果。 贝赛尔曲线: 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);

也是从网上看来的,这里记录一下

原理是利用贝塞尔曲线+弓箭的旋转来造成弓箭的抛物线效果。

贝赛尔曲线:

	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射箭等抛射物的简单解决方案所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1008120.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存