2014-10-11 72 views
1

我想讓一個精靈旋轉一個手指觸摸。老實說,我不知道該怎麼做,spriteKit是新的。 任何想法?如何在spriteKit上觸摸圖像/精靈?

+0

刪除代碼你希望它繼續只要你觸摸旋轉或在設定時間或固定金額 – Egghead 2014-10-11 21:30:15

+0

你想要根據用戶的觸摸位置將精靈旋轉到特定的角度,還是無限期地旋轉精靈? – 0x141E 2014-10-11 21:34:34

+0

感謝人(:這個人在那裏解決了它(:: – 2014-10-12 14:18:33

回答

1

這將使用動作將精靈旋轉到觸摸的位置。如果您希望在拖動手指時旋轉它。您應該刪除該操作並改爲在touchesMoved:上執行計算。

-(void)didMoveToView:(SKView *)view { 
    sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"]; 

    sprite.xScale = 0.5; 
    sprite.yScale = 0.5; 
    sprite.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2); 

    [self addChild:sprite]; 
} 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    for (UITouch *touch in touches) { 
     CGPoint location = [touch locationInNode:self]; 


     float dY = sprite.position.y - location.y; 
     float dX = sprite.position.x - location.x; 
     float angle = atan2f(dY, dX) + 1.571f; 
     [sprite runAction:[SKAction rotateToAngle:angle duration:0.5 shortestUnitArc:YES]]; 
     return; 
    } 
} 

或者:???(請記住,從touchesBegan:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ 
    for (UITouch *touch in touches) { 
     CGPoint location = [touch locationInNode:self]; 

     float dY = sprite.position.y - location.y; 
     float dX = sprite.position.x - location.x; 
     float angle = (atan2f(dY, dX)) + 1.571f; 
     sprite.zRotation = angle; 
    } 
} 
+0

)正如你所說,我希望它旋轉它是在拖動手指的同時,但是你的意思是通過去除動作,精靈如何在沒有交流的情況下旋轉重刑?代碼可能會有幫助...再次感謝! – 2014-10-16 20:11:26

+0

touchesMoved:方法在每次觸摸移動時都會被調用,這是相當多的時間。如果每次添加一個動作,它可能看起來很奇怪,而且效率很低。所以你必須手動更新旋轉。我更新了答案替代解決方案。 – gzafra 2014-10-16 21:16:54