我做了一个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。
答案 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属性用于轻微中断或重大中断。很整洁吧?