2014-11-06 80 views
0

我有一個對象,我試圖在距離屏幕底部一定距離的水平地面上反彈。我如何才能讓物體在這個地方上下穩定地跳動?我有:SpriteKit彈跳對象

self.physicsWorld.gravity = CGVectorMake(0.0, -5.0); 
object.physicsBody.restitution = 1.0; 
object.physicsBody.linearDamping = 0.0; 

,然後聯繫方法,每當我的彈跳對象落在由於重力和我的地面碰撞中,我運用一種衝動:

[object.physicsBody applyImpulse:CGVectorMake(0.0, 10.0)]; 

我的問題是這種做法是零星的。重力的影響需要時間來增加每個時間間隔內的加速度。物體開始彈跳超高,隨着時間的推移,它甚至不再彈跳。有沒有人有更好的方法來流暢地反射我的物體而不會損失能量?

+0

由於摩擦引起的能量損失默認值爲0.2將其更改爲0.0解決您的問題 – dragoneye 2014-11-06 08:29:51

+0

還檢查allowrotation屬性,它需要爲false – dragoneye 2014-11-06 08:52:57

回答

0
-(void)floor 
{ 
    SKSpriteNode *floor = [SKSpriteNode spriteNodeWithImageNamed:@"floor"]; 
    floor.position = yourPosition; 
    floor.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:floor.frame]; 
    floor.physicsBody.dynamic = NO; 
} 

-(void)ball 
{ 
    SKSpriteNode *ball = [SKSpriteNode spriteNodeWithImageNamed:@"ball"]; 
    ball.position = yourPosition; 
    ball.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:ball.size.width/2]; 
    ball.physicsBody.dynamic = YES; 
    ball.physicsBody.restitution = 0.5; 
}