【发布时间】:2011-09-09 00:22:24
【问题描述】:
我正在尝试操纵一个对象。当它靠近另一个物体时,比方说地球,我希望地球对原始物体产生引力。我知道我应该使用CCBezierTo,所以这与其说是一道编程题,不如说是一道数学题。
从数学上讲,我如何计算出贝塞尔曲线的三个点(1、2 和末端)并根据其距离赋予其权重(越远 = 拉力越小)。我已经在变量中绘制了距离。
想象一艘宇宙飞船在月球周围弹弓。
代码:
ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(projectile.position.x + 10, projectile.position.y + 20);
bezier.controlPoint_2 = ccp(projectile.position.x + 20, projectile.position.y + 40);
bezier.endPosition = ccp(projectile.position.x + 30, projectile.position.y+60);
id bezierAction = [CCBezierTo actionWithDuration:1 bezier:bezier];
[projectile stopAllActions];
[projectile runAction: bezierAction];
【问题讨论】:
-
你为什么不将力矢量施加到与物体距离的平方成正比的射弹上?即为什么不只是“做重力”?假设射弹没有直接朝向物体的中心,路径将自然弯曲。
标签: objective-c cocos2d-iphone physics bezier gravity