2013-11-23 2 views
2

Я хочу повернуть пистолет на основе того, что пользователь перетаскивает их пальцем по экрану. Я полагаю, что мне понадобятся мои декартовы точки в полярных координатах и ​​что мне понадобится длинный жест прессы, который есть и то, что у меня есть. Мне просто интересно, как я буду программировать это? жаль, что я действительно новичок в наборе спрайтов. Я прочитал всю документацию по яблоко, и мне трудно найти это. Моя опорная точка равна 0,0.Как повернуть что-то с помощью spritekit относительно координат касания пользователя

-(void)shootBullets:(UILongPressGestureRecognizer *) gestureRecognizer 
{ 
    double radius; 
    double angle; 
     SKSpriteNode *gun = [self newGun]; 
} 

Я понял, как получить угол, но теперь моя zrotation не будет работать. Как и я nslog, и углы правы, но когда я нажимаю gun.zrotation, и я ничего не слышу? пожалуйста, помогите, я получаю uber безумный.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
UITouch *touch = [[event allTouches] anyObject]; 
CGPoint location = [touch locationInView:touch.view]; 
SKSpriteNode *gun = [self newGun]; 
self.gunRotation = atanf(location.y/location.x)/0.0174532925; 
gun.zRotation = self.gunRotation; 
NSLog(@"%f",gun.zRotation); 
} 

ответ

4

Это очень старый вопрос, но вот то, что я сделал - надеюсь, это поможет кому-то там:

#import "MyScene.h" 
#define SK_DEGREES_TO_RADIANS(__ANGLE__) ((__ANGLE__) * 0.01745329252f) // PI/180 

Затем добавьте это:

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

     float deltaX = positionInScene.x - gun.position.x; 
     float deltaY = positionInScene.y - gun.position.y; 

     float angle = atan2f(deltaY, deltaX); 

     gun.zRotation = angle - SK_DEGREES_TO_RADIANS(90.0f); 
    } 
} 
+0

Я не знаю этого языка, этот ответ появился в «Поздних ответах». Предполагается, что в этом есть f? '* 0.01745329252f' – Popnoodles

+0

' SK_DEGREES_TO_RADIANS (90.0f) 'на самом деле' M_PI_2'. –

+0

Существует встроенная функция для градусов и радиан: ['GLKMathDegreesToRadians()'] (https://developer.apple.com/library/ios/documentation/GLkit/Reference/GLKMathUtils/index.html#//apple_ref/с/FUNC/GLKMathDegreesToRadians). –

0

Отъезд answers I got to this question about how to implement a rotary knob, люди уже выяснили всю геометрию, все, что вам нужно сделать, это реализовать прозрачную ручку управления, получить его угол и передать его в объект набора спрайтов, используя действие вращать

Смежные вопросы