触摸事件中精灵的旋转
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
如何在触摸事件中旋转 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