Sprite Kit中的轨迹预测

时间:2014-12-22 08:12:02

标签: sprite-kit game-physics skphysicsbody

我试图使用以下公式预测物体(球)的移动位置

t = 1秒的计算

y = VelocityY * t + 0.5*Gravity*t2
x = VelocityX * t

以下代码:

    +(CGVector) getTrajectoryPointWithInitialPosition:(CGVector) initialPosition andInitialVelocity:(CGVector) initialVelocity andSteps: (CGFloat)n andSceneLayer: (SKScene*) sceneLayer
    {
    // Put data into correct units
    CGFloat t = 1.0 / 60.0;

    // m/s
    CGVector stepVelocity = CGVectorMake(t * initialVelocity.dx, t * initialVelocity.dy);


    // m/s^2
    CGVector stepGravity = CGVectorMake(t * t * sceneLayer.physicsWorld.gravity.dx, t * t * sceneLayer.physicsWorld.gravity.dy);

    initialPosition = CGVectorMake(initialPosition.dx + n * stepVelocity.dx,
                                   initialPosition.dy + n * stepVelocity.dy + 0.5 * (n*n+n) * stepGravity.dy);

    return CGVectorMake(initialPosition.dx + n * stepVelocity.dx,
                        initialPosition.dy + n * stepVelocity.dy + 0.5 * (n*n) * stepGravity.dy);
}

然后我使用以下

发射球(静止/非动态)
CGVector aVelocity = CGVectorMake(initialVelocity.dx*17.5, initialVelocity.dy*17.5);
[ball.physicsBody setVelocity:aVelocity];

我无法弄清楚的是:

球的initialVelocity和轨迹预测是一样的。如果它是相同的,为什么将球的initialVelocity乘以17.5得到球的运动和从上面获得的预测轨迹匹配。看起来它跟随预测的路径,但我不明白为什么将球速度乘以17.5会使球

![乘以17.5之前] http://i.imgur.com/bKkPGmh.png - 乘以17.5之前 ![将速度乘以17.5后] http://i.imgur.com/Ae7sY4i.png - 乘以17.5

0 个答案:

没有答案