最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-09 08:06:47
文档

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

cocos2dx射箭等抛射物的简单解决方案:也是从网上看来的,这里记录一下 原理是利用贝塞尔曲线弓箭的旋转来造成弓箭的抛物线效果。 贝赛尔曲线: ccBezierConfig bezier;bezier.controlPoint_1 = start;bezier.controlPoint_2 = (start.x+(end.x-start.x)*0
推荐度:
导读cocos2dx射箭等抛射物的简单解决方案:也是从网上看来的,这里记录一下 原理是利用贝塞尔曲线弓箭的旋转来造成弓箭的抛物线效果。 贝赛尔曲线: ccBezierConfig bezier;bezier.controlPoint_1 = start;bezier.controlPoint_2 = (start.x+(end.x-start.x)*0


也是从网上看来的,这里记录一下 原理是利用贝塞尔曲线弓箭的旋转来造成弓箭的抛物线效果。 贝赛尔曲线: ccBezierConfig bezier;bezier.controlPoint_1 = start;bezier.controlPoint_2 = (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 = (start.x+(end.x-start.x)*0.5,start.y+(end.y-start.y)*0.5+100);
	bezier.endPosition = (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射箭等抛射物的简单解决方案:也是从网上看来的,这里记录一下 原理是利用贝塞尔曲线弓箭的旋转来造成弓箭的抛物线效果。 贝赛尔曲线: ccBezierConfig bezier;bezier.controlPoint_1 = start;bezier.controlPoint_2 = (start.x+(end.x-start.x)*0
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top