cocos2dx射箭等抛射物的简单解决方案
发布时间:2020-12-14 19:20:06 所属栏目:百科 来源:网络整理
导读:也是从网上看来的,这里记录一下 原理是利用贝塞尔曲线+弓箭的旋转来造成弓箭的抛物线效果。 贝赛尔曲线: 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 style="font-family: Arial,Helvetica,sans-serif;">45.0f</span><span style="font-family: Arial,sans-serif;">;</span> CCRotateTo *actionRotate =CCRotateTo::create(duration,angle);
CCSpawn* actionSpawn = CCSpawn::createWithTwoActions(actionBezier,actionRotate); 好了,大功告成。 但是这样做了之后,感觉射箭效果仍然不理想,毕竟是投机取巧的方法。为了优化视觉效果,可以调整动画播放的速度。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |