【问题标题】:Rotation of Sprite in touch event触摸事件中 Sprite 的旋转
【发布时间】:2015-01-06 19:15:03
【问题描述】:

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

到目前为止的代码如下:

 // 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 度转弯似乎在瞬间起作用,然后恢复到原来的位置。

如何让旋转保持平稳并平稳旋转?

【问题讨论】:

    标签: ios rotation sprite-kit game-physics


    【解决方案1】:

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

    let radians = CGFloat(M_PI) * degrees / 180.0
    

    从那里开始,然后查看精灵是否以更可预测的方式表现

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

    car.zRotation = radians
    

    【讨论】:

    • 嗨,谢谢!但是它仍然在做同样的事情,它会立即恢复到 0 度?在触摸事件中放置动画是不好的做法/不正确吗?
    • 可能需要查看更多与您的汽车相关的代码,但我只是在答案中添加了一点
    • zRotation 解决了这一切!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2012-12-01
    • 2013-12-26
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多