cocos2dx射箭等抛射物的简单解决方案
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了cocos2dx射箭等抛射物的简单解决方案,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1223字,纯文字阅读大概需要2分钟。
内容图文
![cocos2dx射箭等抛射物的简单解决方案](/upload/InfoBanner/zyjiaocheng/534/aef25ee4fcc948ee96af515a7df839a3.jpg)
也是从网上看来的,这里记录一下 原理是利用贝塞尔曲线弓箭的旋转来造成弓箭的抛物线效果。 贝赛尔曲线: 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 = 45.0f; CCRotateTo *actionRotate =CCRotateTo::create(duration,angle);
CCSpawn* actionSpawn = CCSpawn::createWithTwoActions(actionBezier,actionRotate);
好了,大功告成。
但是这样做了之后,感觉射箭效果仍然不理想,毕竟是投机取巧的方法。为了优化视觉效果,可以调整动画播放的速度。
内容总结
以上是互联网集市为您收集整理的cocos2dx射箭等抛射物的简单解决方案全部内容,希望文章能够帮你解决cocos2dx射箭等抛射物的简单解决方案所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。