2015-12-31 28 views
1

我有一個SpriteNode類,它在主場景中旋轉時旋轉非常寬(就像錨點位於屏幕中間,Sprite圍繞它旋轉一樣) 。我想讓它圍繞主場景(Sprite上的錨點)自身的錨點旋轉。SpriteNode類在場景中不能正確旋轉

所以在課堂上,我有一些像下面

- (void)createChainWithPos:(CGPoint)pos { 
    SKTexture *myTex... 
    SKTexture *myTex2... 
    SKSpriteNode *chainFront = [SKSpriteNode spriteWithTexture:myTex]; 
    chainFront.position = pos; 
    chainFront.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:mytex.size]; 
    [self addChild:chainFront]; 
    [_chainParts addObject:chainFront]; 

    SKSpriteNode *chainSide = [SKSpriteNode spriteWithTexture:myTex2]; 
    chainSide.position = CGPointMake(chainFront.position.x, chainFront.position.y - chainSide.size.height + 6); 
    chainSide.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:myTex2.size; 
    [self addChild:chainSide]; 
    [_chainParts addObject:chainSide]; 
} 

我有一個循環創建主文件鏈部分,但不能把它旋轉,以便在新的項目中剝離下來。實際上有4個鏈條部件,但我只做了兩個。另外兩個是剛剛超過他們的位置鏡像chainSide的那些的鏡像。(他們定位在喜歡時尚連鎖)

,並在現場

self.chain1 = [chain node];  
[self.chain1 createChainWithPos:CGPointMake(self.size.width/2, self.size.height/2); 
self.chain1.zRotation = 3.14/4; 
[self addChild:self.chain1]; 

我在鏈類有一個的NSMutableArray標題,我用來舉行鏈。

物理關節

for (int i = 1; i < self.chain1.chainParts.count; i++ { 
    SKSpriteNode *nodeA = [[self.chain1 chainParts]objectAtindex:i-1]; 
    SKSpriteNode *nodeB = [[self.chain1 chainParts]objectAtindex:i]; 

    SKPhysicsJointPin *pin = [SKPhysicsJointPin jointWithBodyA:nodeA.physicsBody 
                 bodyB:nodeB.physicsBody 
                 anchor:CGPointMake(CGRectGetMidX(nodeA.frame), CGRectGetMinY(nodeA.Frame))]; 

} 

我發現,如果我設置在類中間的鏈的位置,它在場景正確旋轉。然而,物理關節剛開始在屏幕上隨機移動,並且對錨點集合不正確。 (物理關節設置在場景中)

我不知道是否必須轉換座標或玩隨機錨點位置,但如果有人可以擺脫一些光,如果將不勝感激。

回答

0

您不想使用節點frame,想要使用節點size,frame mid是屏幕座標+擬合節點大小/ 2,您只需要您的精靈中間,也可以用於pi/4使用M_PI_4

+0

好吧,我明白了......絕對會試試這個。謝謝你的幫助! –