2013-10-14 40 views
1

我想要一個球精靈每次跳到相同的高度。但隨着每一次跳躍,球的最大高度位置都會增加。SpriteKit:意外的物理問題

-(id)initWithSize:(CGSize)size {  
    if (self = [super initWithSize:size]) { 

     SKNode *ground = [SKNode node]; 
     ground.physicsBody = [SKPhysicsBody bodyWithEdgeFromPoint:CGPointZero toPoint:CGPointMake(CGRectGetMaxX(self.frame), 0)]; 
     [self addChild:ground]; 

     SKShapeNode *ball = [[SKShapeNode alloc] init]; 
     CGMutablePathRef myPath = CGPathCreateMutable(); 
     CGPathAddArc(myPath, NULL, 0, 0, 30, 0, M_PI*2, YES); 
     ball.path = myPath; 
     ball.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMaxY(self.frame)-100); 
     ball.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:ball.frame.size.width/2]; 
     ball.physicsBody.linearDamping = 0.0; 
     ball.physicsBody.restitution = 1.0; 
     [self addChild:ball]; 

    } 
    return self; 

}

有什麼建議?

回答

1

看看如何設置兩個身體的復原和摩擦力,而不僅僅是球。如果它增長並且不縮小,那麼物理機構可能會出現錯誤。 SKShapeNode在我的測試中出現臭名昭着的不可靠 - 我會考慮使用SKSpriteNode來維持您的理智。

+0

該節點與物理有什麼關係?即基礎物理體不受與其相關的視圖的影響。 – LearnCocos2D

+0

我以爲同樣的事情,然後開始使用像OP這樣的圓形節點,並遇到了使用sprite節點修復它們的物理體的奇怪問題。也許不是這裏的問題,但是無論哪種方式,我相信形狀節點會讓你在當前狀態的某個時刻陷入困境。你不同意? – Matt

+0

我覺得那不太可能。爲什麼觀點會對身體有所不同,身體是否一樣?爲什麼身體會根據視圖而有所不同?唯一可能發生的情況是像self.frame這樣的視圖屬性被用來初始化物理體,就像在這個例子中一樣(即半徑取決於ball.frame.size)。 – LearnCocos2D