所以我正在寫一個射手在目標上射箭的遊戲。通過使用由用戶在屏幕上拖動他們的手指形成的線的x和y分量來確定拍攝速度和角度。我在這裏遇到的麻煩的效果是讓我的弓箭手手臂以與上面提到的線形成的角度相同的角度旋轉SpriteKit:根據計算出的角度旋轉節點
我計算控制器類中的角度我寫得像這樣(不確定是否所有鑄造是壞:)
+(CGFloat)calculateAngleToRotateByGivenX:(CGFloat)xComponent Y:(CGFloat)yComponent{
double oppOverAdj = (double)yComponent/(double)xComponent;
return -(CGFloat)atan(oppOverAdj);
於是我給那個計算的角度給我的射手節點使用旋轉臂
-(void)rotateArmByAngle:(CGFloat)angle{
SKAction *rotateArmBy = [SKAction rotateToAngle:angle duration:0 shortestUnitArc:YES];
[[self childNodeWithName:@"upperArm"]runAction:rotateArmBy];
}
所有它看起來像這樣
場景放在一起-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint currentPosition = [touch locationInNode:self];
CGPoint previousPosotion = [touch previousLocationInNode:self];
[player rotateArmByAngle:[PSSpriteController calculateAngleToRotateByGivenX:intialTouchPosotion.x-currentPosition.x Y:initialTouchPosition.y-currentPosition.y]];
}
測試時,手臂旋轉但不完全達到我期望的角度。我正在尋找任何建議,以獲得我正在工作,或者如果有一個完全不同的方法,我應該採取我很想給這一槍,謝謝。另外讓我知道是否有更多的信息會有用。
你能告訴你期待什麼,什麼是實際發生的區別? –
它看起來好像從0到180deg可以正常工作,然後翻轉並面向錯誤的方向。這是它的工作http://imgur.com/PWDjwuW,這裏與它翻轉了錯誤的方向http://imgur.com/tfcW2ah – Jaicob