对象'休息'从下降

时间:2015-03-11 18:06:43

标签: objective-c ios8 sprite-kit physics

我做了一个x = 25&的正方形y = 25并附上一个SKPhysicsBody。我做了一个标准的平台级别,有几个高的下降区域。我希望广场能够“突破”/遭受从高处坠落造成的伤害。我看了维基百科,发现了牛顿万有引力定律F = mg。 m是方形和质量的质量。 g是重力。所以我这样做了:

@implementation
{
    double m = square.physicsBody.mass;
    CGVector g = self.physicsWorld.gravity;
    double F;
}

-(void)update:(CFTimeInterval)currentTime
{
    [self fallFormula];
}

-(void)fallFormula
{
    F=m*g;
}

对于程序员来说,遗憾的是我在数学方面非常弱。有人可以帮忙弄清楚如何计算对广场坠落的影响力吗?在那之后,我将弄清楚广场将“破坏”的F值。顺便说一下,我只知道objective-c(还没有Swift),我正在使用SpriteKit。

3 个答案:

答案 0 :(得分:3)

为什么不设置自己的速度来破坏排名,而不是试图去现实生活。

首先声明一个浮点数。然后在update方法中添加以下代码:

if(myNode.physicsBody.velocity.dy < myFloat) {
    myFloat = myNode.physicsBody.velocity.dy;
}

Velocity.dy是节点物理体的垂直移动。您现在要做的就是根据节点达到的最大dy速度设置您的伤害等级。

要测试dy值的工作方式,您可以将其添加到更新方法中:

NSLog(@"dy velocity = %f",myNode.physicsBody.velocity.dy);

删除您的节点并查看日志。

答案 1 :(得分:1)

您将不得不计算物体行进的距离,可用于计算势能的变化。然后你可以通过利用力和能量之间的关系来获得力量。

答案 2 :(得分:1)

我认为你的方块正在撞击平台?如果是这样,最现实的结果是在平台和广场之间使用collision detection

当平台与广场发生碰撞时,您将获得一个SKPhysicsContact对象,其中包含“collisionImpulse”属性,可以告诉您两个物体相互碰撞的难度。

让碰撞工作有点工作,但值得搞清楚,因为它可以帮助你避免做任何数学运算。

然后,可以将collisionImpulse属性用于轻微中断或重大中断。很整洁吧?

相关问题