2014-02-25 66 views
-4

我正在開發使用SpriteKit開發的基於吊帶的遊戲。 但是,我不知道如何實現物理。使用SpriteKit進行吊索拍攝?

任何人都可以提供關於如何開始實施它的任何提示?

+1

嘿,Almo,我覺得你對我太難了。這不僅適用於你自己的PRO,也適用於像我這樣的傻瓜。如果像我這樣的初學者會害怕問問題,這個網站將會下降,你將被單獨留在這裏來慶祝你的偉大......是的,我試圖尋找其他解決方案,但我發現不適合到SpriteKit。 – Yuvals

+1

對這裏應該提出的問題有一個狹義的定義。 http://stackoverflow.com/help閱讀。我們非常支持遵守規則的人。你的問題並不表明你已經對此做過任何研究。我們期望的是「我在我的遊戲中實施物理時遇到了困難,下面是我嘗試過的: - 小代碼示例 - 但拍攝並沒有移動 – Almo

回答

4

這裏是如何得到如何實現這樣一個遊戲的想法。

讓我們來創建一個我們將要拋出的球。首先,我們需要一個屬性:

@property(nonatomic, strong) SKShapeNode *ball; 

然後我們必須爲我們的球SKShapeNode並設置其物理體:

-(id)initWithSize:(CGSize)size 
{ 
    if (self = [super initWithSize:size]) 
    { 
     _ball = [[SKShapeNode alloc] init]; 

     // Create a circle. 
     CGMutablePathRef circle = CGPathCreateMutable(); 
     CGPathAddArc(circle, NULL, 0,0, 60, 0, M_PI*2, YES); 

     // Set the shape of our ball and its color. 
     _ball.path = circle; 
     _ball.fillColor = [SKColor blueColor]; 
     _ball.position = CGPointMake(200, 200); 

     // Create a circular physics body. 
     _ball.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:60]; 

     [self addChild:_ball]; 

     // Create a physics body that borders the screen. 
     SKPhysicsBody* borderBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; 

     // Set physicsBody of scene to borderBody. 
     self.physicsBody = borderBody; 
    } 

    return self; 
} 

那我們申請的衝動一球所需anglemagnitude

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    CGFloat angle = M_PI_4; 
    CGFloat magnitude = 1000; 

    [_ball.physicsBody applyImpulse:CGVectorMake(magnitude*cos(angle), 
               magnitude*sin(angle))]; 
} 

在您的實現就需要在touchesBegan和01計算角度和幅度值方法並應用衝動touchesEnded

這應該給你一個開始。希望能幫助到你。

+0

謝謝,這確實是一個很好的開始。 – Yuvals