我是一位经验丰富的iPhone开发者,但对Cocos2D和Box2D不熟悉,我完全承认我需要进行物理复习。我要构建的是一个预览轨迹(一个弧线表示基于输入变量的射弹飞行路径 - 类似于许多愤怒的小鸟风格游戏中所见)。
我想做一些不同的事情,其中我设置起点(射弹在屏幕上开始位置)和终点(目标位置)。根据用户输入,抛物线的高度会有什么变化。所以在这个意义上,我并没有使用抛物线路径来预测目标将落在哪里,而是射弹撞击目标的角度(再次,抛物线始终终止于目标)。
我没有在网上看到任何符合我需求的东西。大多数可用的代码更多地与向用户展示射弹落地的地方有关。我想确定角度(矢量)和应用于身体以匹配不同抛物线振幅的脉冲,但总是在同一位置结束。一张图片胜过千言万语,所以我已经链接到一张自制图片试着帮忙解释一下(所以不要让我嵌入图片)。
任何帮助都将不胜感激。
答案 0 :(得分:1)
让我们在数学模型中表示这一点......抛物线方向的Angle
是输入变量,抛物线穿过0
中的x轴,target point
,height
将被计算
抛物线看起来如此:y = x*(a-x)*b
,其中a
定义到目标点的距离,b
是(a
)影响起始角度和高度的某个值。
我们可以通过原点中心atan (x/y)
计算角度。我们知道切线代表抛物线的衍生物。衍生品为y' = a*b - 2*x*b
,在原点中心y=0
和x=0
,我们得到[derivative in origin center] = a*b
。 a
预定义为与目标点的距离,因此angle
受b
angle = atan(a*b)
变化的影响。
此时我们有抛物线方程y = x*(a-x)*b
,预定义a=[distance to target point]*4
和角度方程angle=atan(a*b)
,其中b
是输入值。例如:
a=40
b = tan(45*)/a
- > b=1/40
y = x*(a-x)*b
:y = x*(40-x)/40
并检查... 至于最大高度,它是根据a*x^2+b*x+c = 0
的条件计算的х=-b/2а
。我想,自己计算起来应该不难:)
答案 1 :(得分:0)
尝试检查贝塞尔曲线。您可以使用它们定义所需的路径。您可以使用或不使用cocos 2d。