触摸事件中精灵的旋转

Rotation of Sprite in touch event

如何在触摸事件中旋转 SpriteNode?

这里是到目前为止的代码:

 // 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 的旋转不起作用,即使其他 Whosebug 问题已将其作为可接受的答案。此外,工作正常的 50 度转弯似乎在瞬间工作,然后恢复到原来的位置。

我怎样才能使旋转平稳地固定和旋转?

当您使用 rotateByAngle 时,它以弧度为单位。一个圆圈大约有 6 个弧度。所以你要多次旋转这个精灵。这不是您期望的 50 度转弯。您需要使用 CGFloat(M_PI) 的变体。如果你想在度数和弧度之间转换,转换是

let radians = CGFloat(M_PI) * degrees / 180.0

从那里开始,然后看看精灵的行为是否更可预测

因为你的动画持续时间是 0,所以真的没有理由在那里使用动作..你可以设置

car.zRotation = radians