Ios 斯威夫特SpriteKit-zRotation随动路径

Ios 斯威夫特SpriteKit-zRotation随动路径,ios,sprite-kit,rotation,uibezierpath,skaction,Ios,Sprite Kit,Rotation,Uibezierpath,Skaction,我正在做一个游戏,现在我有一个问题,关于沿着一条路径旋转一个SpriteNode 我有一个ShapeNode,看起来像这样: 我正在为这个形状使用UIBezierPath 现在我有一个从这个路径中间开始的随机变量,从左向右随机移动,否则, 为此,我有两个功能: func FischRechtsBewegen(){ //for moving right FischNode1.removeAllActions() let BewegeRechts = SKAction.follow

我正在做一个游戏,现在我有一个问题,关于沿着一条路径旋转一个SpriteNode

我有一个ShapeNode,看起来像这样:

我正在为这个形状使用UIBezierPath

现在我有一个从这个路径中间开始的随机变量,从左向右随机移动,否则,

为此,我有两个功能:

func FischRechtsBewegen(){ //for moving right
    FischNode1.removeAllActions()
    let BewegeRechts = SKAction.follow(FischKurveRechts.cgPath, asOffset: false, orientToPath: true, duration: 6)
    FischNode1.run(BewegeRechts)
}

func FischLinksBewegen(){ //for moving left
    FischNode1.removeAllActions()
    let BewegeLinks = SKAction.follow(FischKurveLinks.cgPath, asOffset: false, orientToPath: true, duration: 6)
    FischNode1.run(BewegeLinks)
}
此外,在该函数中,我会为SpriteNode的每次方向变化计算一条新路径。(但由于此代码对我的问题不重要,我在这里的示例代码中删除了它)

此新路径(用于SKAction)从SpriteNode的实际位置开始,然后向右(如果新移动是向右的)或向左(如果新移动是向左的),并带有一条到旧起点/终点的曲线

我现在的问题是: 向左移动时,精灵节点的旋转正是我想要的。节点“查看”屏幕顶部。向右移动时,Spritodes Z旋转不好-现在节点指向屏幕底部,非常难看

我尝试了不同的方法-我改变了SpriteNode的图像(旋转)。我试着用一个动作来改变SpriteNode的zRotation。没什么帮助。当然,因为在我的行动中,我说的是“orientToPath=true”。我现在问。。有没有一种简单的方法可以让SpriteNode始终“看”到屏幕顶部,还是必须在update()函数中手动更改zRotation

我这样问是因为SKAction.follow(orientToPath)中有这个属性,我问自己在这种情况下是否可以使用它,但是否有一种方法可以根据我的需要稍微更改它。或者,如果这是不可能的-如果路径是向左的,为什么orientToPath与向右的路径中的orientToPath不同

这是我的问题的视频,也许更容易理解我的意思。

您可以尝试使用以下方法反转您的
UIBezierPath

public func bezierPathByReversingPath() -> UIBezierPath

而不是反向跟随路径操作,并使用一个布尔值监视此操作,该布尔值知道何时为顺时针方向或逆时针方向。

您是否尝试设置
sprite.yScale=-1
和/或
sprite.xScale=-1
?它起作用了。。天哪,太容易了。。谢谢你的帮助!谢谢你的回答。我没有测试这个解决方案,因为之前来自0x141E的答案已经起作用了。也许其他有同样问题的人可以试试这个?我知道我曾试图扭转这一行动,但没有成功。再次感谢你。这还不够:)祝你的项目好运