物体 'breaks' 坠落
Object 'breaks' from falling
我制作了一个 x=25 & y= 25 的正方形,并附加了一个 SKPhysicsBody。我制作了一个标准的平台关卡,其中有几个高落区域。我希望正方形 'break'/ 因从高处掉落而受到损坏。我看了维基百科,发现牛顿万有引力定律 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;
}
不幸的是,对于一个程序员来说,我的数学特别差。有人可以帮忙弄清楚如何计算广场坠落的影响力吗?之后,我将计算出正方形 'break' 的 F 值。顺便说一句,我只知道objective-c(还不知道Swift),我正在使用SpriteKit。
你将不得不计算物体移动的距离,它可以用来计算势能的变化。然后你可以利用力和能量之间的关系得到力。
为什么不设置自己的速度来破坏排名,而不是试图在这里度过所有现实生活。
首先声明一个float。然后在更新方法中添加这段代码:
if(myNode.physicsBody.velocity.dy < myFloat) {
myFloat = myNode.physicsBody.velocity.dy;
}
Velocity.dy 是节点物理体的垂直移动。您现在所要做的就是根据您的节点达到的最大 dy 速度设置您的损坏等级。
要测试 dy 值的工作原理,您可以将其添加到您的更新方法中:
NSLog(@"dy velocity = %f",myNode.physicsBody.velocity.dy);
放下您的节点并查看日志。
我猜你的方块撞到了平台?如果是这样,最现实的结果就是在平台和广场之间使用collision detection。
当平台和广场发生碰撞时,您将获得一个 SKPhysicsContact 物体,其中包括 "collisionImpulse" 属性 可以告诉您两个物体碰撞的强度彼此。
让碰撞正常工作需要一点点工作,但值得把它搞清楚,因为它会让你免于做任何数学运算。
collisionImpulse 属性 可用于小破或大破。很整洁吧?
我制作了一个 x=25 & y= 25 的正方形,并附加了一个 SKPhysicsBody。我制作了一个标准的平台关卡,其中有几个高落区域。我希望正方形 'break'/ 因从高处掉落而受到损坏。我看了维基百科,发现牛顿万有引力定律 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;
}
不幸的是,对于一个程序员来说,我的数学特别差。有人可以帮忙弄清楚如何计算广场坠落的影响力吗?之后,我将计算出正方形 'break' 的 F 值。顺便说一句,我只知道objective-c(还不知道Swift),我正在使用SpriteKit。
你将不得不计算物体移动的距离,它可以用来计算势能的变化。然后你可以利用力和能量之间的关系得到力。
为什么不设置自己的速度来破坏排名,而不是试图在这里度过所有现实生活。
首先声明一个float。然后在更新方法中添加这段代码:
if(myNode.physicsBody.velocity.dy < myFloat) {
myFloat = myNode.physicsBody.velocity.dy;
}
Velocity.dy 是节点物理体的垂直移动。您现在所要做的就是根据您的节点达到的最大 dy 速度设置您的损坏等级。
要测试 dy 值的工作原理,您可以将其添加到您的更新方法中:
NSLog(@"dy velocity = %f",myNode.physicsBody.velocity.dy);
放下您的节点并查看日志。
我猜你的方块撞到了平台?如果是这样,最现实的结果就是在平台和广场之间使用collision detection。
当平台和广场发生碰撞时,您将获得一个 SKPhysicsContact 物体,其中包括 "collisionImpulse" 属性 可以告诉您两个物体碰撞的强度彼此。
让碰撞正常工作需要一点点工作,但值得把它搞清楚,因为它会让你免于做任何数学运算。
collisionImpulse 属性 可用于小破或大破。很整洁吧?