SpriteKit - 如何使applyImpuse始终具有相同的力量

时间:2014-02-10 23:22:24

标签: objective-c sprite-kit

我正在制作一个我的英雄能够跳跃的游戏。我可以使用applyImpulse轻松完成。我遇到的问题是我希望他能够双跳,有时三跳。当他进行双跳时,有时候他真的很高。方式高于第一跳。我希望每次他做的时候他的跳跃都是平等的,我希望他以他上升的速度下降。

我正在使用它来跳跃:

[hero.physicsBody applyImpulse:CGVectorMake(0, 120)];

我没有定义很多物理世界,这可能是我的问题。我有以下几套:

self.physicsWorld.contactDelegate = self;
self.physicsWorld.gravity = CGVectorMake(0, -10.0);

我尝试过不同的重力,但结果相同。

我的英雄有以下属性:

hero.physicsBody.friction = 1.0f;
hero.physicsBody.restitution = 0.0f;
hero.physicsBody.linearDamping = 0.1f;
hero.physicsBody.allowsRotation = NO;
hero.physicsBody.mass = 0.2f;

这里有什么东西会导致我的问题吗?我缺少的东西或我应该尝试的东西?

1 个答案:

答案 0 :(得分:4)

这就是物理学的作用。解决它的方法是在你施加第二次冲动之前重置英雄的速度。

hero.physicsBody.velocity = CGVectorMake(0, 0);
[hero.physicsBody applyImpulse:CGVectorMake(0, 120)];