2016-07-05 11 views
1

私はゲームで作業しています。私は今、パスをたどりながらSpriteNodeのzRotationに質問しました。Swift SpriteKit - SKActionのzRotationをパスに従います

だから私はこのようになりますShapeNodeあります enter image description here

イムこのShapeのためUIBezierPathを使用します。

私はSpriteNodeをこのパスの途中から開始し、左から右へランダムに移動します。方向SpriteNodeの新しいパスの各変化を計算イムこの機能でも

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) 
} 

このため

iは2つの機能を有しています。 (このコードは私の質問では重要ではないのでここでは私のサンプルコードで削除した)

この新しいパスは、SpriteNodeの実際の位置から始まり、 (新しい動きが残っている場合)、古いスタート/エンドポイントへのカーブを使って左に移動します。

私の問題は今ある:左に移動するときは SpritesNodes zRotationは、私はそれをしたい正確にどのようです。ノードは、画面の上部を「見る」。右に移動すると、SpriteNodes zRotationは良くありません。ノードは画面の一番下を指していますが、これは非常に醜いです。

Iveは別のものを試しました。私はSpriteNode(回転しているもの)用の画像を変更しました。私はアクションでSpriteNodeのzRotationを変更しようとしました。何も役立ちません。もちろん、私のSKActionでは "orientToPath = true"と言っているからです。 SpriteNodeを常に画面の上部を見ている簡単な方法か、update()関数でzRotationを手動で変更する必要がありますか?

SKAction.follow(orientToPath)にこのプロパティがあり、私がこのケースでそれを使用できるかどうかを尋ねているので、私の必要性のために少し変更する方法があるかどうか聞いています。または、これが不可能な場合 - パスが左に行く場合、右に行くパスのorientToPathとorientToPathが異なるのはなぜですか?

これは私の問題のビデオです https://youtu.be/vLH5nUlE91U

+1

'sprite.yScale = -1'や' sprite.xScale = -1'を設定しようとしましたか? – 0x141E

+0

それは働いた.. omg - とても簡単です..助けてくれてありがとう! – aignetti

答えて

1

あなたが逆転しようとすることができ、あなたの方法でUIBezierPath

public func bezierPathByReversingPath() -> UIBezierPath 
代わりに逆followPathアクションの

、あなたが時計回りのセンスまたは反時計回り感覚にされたときに知っているブーリアンでこのアクションを監視。

+1

あなたの答えをありがとう。私は0x141Eからの答えがすでに働いていたので、この解決法をテストしなかった。たぶん同じ問題を抱えている誰かがこれを試すことができますか?私はSKActionを逆転しようとしたことを知っており、これはうまくいきませんでした。ありがとうございました。 – aignetti

+0

逆SKActionは十分ではありません:)あなたのプロジェクトのための幸運 –

関連する問題