【发布时间】:2017-05-29 07:32:09
【问题描述】:
我正在尝试复制飞扬的小鸟游戏作为一种练习。 当你触摸屏幕时玩飞扬的小鸟时,小鸟会稍微向上倾斜(然后向上),然后当你松开它时,它会向下旋转并下降。
我已经设置了所有物理设置,我只需要知道如何将小鸟向上旋转(同时保持拍动的翅膀动画),然后在您松开手时将其再次转为面朝下。
我确定容易吗?...
【问题讨论】:
标签: ios swift sprite-kit
我正在尝试复制飞扬的小鸟游戏作为一种练习。 当你触摸屏幕时玩飞扬的小鸟时,小鸟会稍微向上倾斜(然后向上),然后当你松开它时,它会向下旋转并下降。
我已经设置了所有物理设置,我只需要知道如何将小鸟向上旋转(同时保持拍动的翅膀动画),然后在您松开手时将其再次转为面朝下。
我确定容易吗?...
【问题讨论】:
标签: ios swift sprite-kit
在更新帧方法中放置
-Swift 3-
let value = Bird.physicsBody!.velocity.dy * ( Bird.physicsBody!.velocity.dy < 0 ? 0.005 : 0.001 )
Bird.zRotation = min( max(-0.5 //determines how much rotation when falling down, value), 1 //determines how much when jumping up )
只要施加脉冲,鸟就会旋转
【讨论】:
在不知道SpriteKit 的情况下,我会考虑像在这个问题的第二个答案中那样旋转您的坐标系。 @ToddFincannon 建议保存图形状态、平移/旋转坐标系(最有可能到精灵的中心)、绘制和恢复。大致复制他的答案,这将转化为
let c = UIGraphicsGetCurrentContext()!
c.saveGState()
c.translateBy(x: sprite.midX, y: midY)
c.rotate(by: angle * .pi / 180)
// Draw your sprite at 0, 0 (it is already translated)
c.restoreGState()
为了向上旋转,您可能需要一个负角。
【讨论】: