2015-01-06 4 views
0

Как я могу повернуть SpriteNode в событии касания?Вращение спрайта в событии касания

Вот код that've получил до сих пор:

// Detect what side of the screen the user has touched. 
if(touchLocation.x < 160) { 
    // They've touched the left side (the car turns left) 
    [car runAction:[SKAction rotateByAngle:-50 duration:0]]; 
    [car.physicsBody applyImpulse:CGVectorMake(-20,0)]; 
    car.physicsBody.velocity = CGVectorMake(-20, 0); 

}else{ 
    // They've touched the right side (the car turns right) 
    [car runAction:[SKAction rotateByAngle:50 duration:0]]; 
    [car.physicsBody applyImpulse:CGVectorMake(20,0)]; 
    _bird.physicsBody.velocity = CGVectorMake(20, 0); 
} 

Вращение на -50 не работает, даже если другие вопросы StackOverflow дали, что, как принято отвечать. Также рабочий нормальный 50-градусный поворот, кажется, работает на долю секунды, а затем возвращается в исходное место.

Как бы я получил поворот, чтобы придерживаться и вращаться плавно?

ответ

3

при использовании rotateByAngle это в радианах. theres около ~ 6 радианов в круге. поэтому вы много раз вращаете этот спрайт. Это не 50-градусный поворот так, как вы ожидали. Вы должны использовать вариации CGFloat(M_PI). Если вы хотите конвертировать между градусами и радианы преобразование

let radians = CGFloat(M_PI) * degrees/180.0 

старт там, а затем посмотреть, если спрайт ведет себя более предсказуемо не

поскольку ваша продолжительность анимации составляет 0 там действительно нет причин использовать действие там .. можете ли вы просто установить

car.zRotation = radians 
+0

Привет, спасибо за это! Однако он все еще делает то же самое с ним, мгновенно возвращаясь к 0 градусам? Неправильная практика/неправильная установка анимации в событии касания? – Jahoe

+0

, вероятно, нужно увидеть больше кода, связанного с вашим автомобилем, но я просто добавил немного к моему ответу. – hamobi

+0

zRotation исправил все! Благодарю. – Jahoe

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