2

私は現在Swift 3とSpriteKitを使ってゲームを開発中です。私はユーザーが収集できるゲーム中に落ちるコインを持っています。今は落ちて回転や何もない。 3D紡績エフェクトを追加したいと思います。この効果は、y軸を中心とする回転でなければなりません。このような3Dエフェクトを作成する方法や別のプログラムを使用する必要があるかどうかはわかりません。3Dコインフリッピングアニメーション(SKSpriteNode)

私が見つけた私は別のスタックオーバーフローのポスト上を探していますが、それはObjective-Cである:と私は(リンクから)これを行う方法を見つけた

Spinning an image like a coin

コアアニメーション/コアグラフィックス、しかし私はそれをSKSpriteNodeで動作させる方法を知らない。

var coinFlip = CATransition() 
    coinFlip.startProgress = 0 
    coinFlip.endProgress = 1.0 
    coinFlip.type = "flip" 
    coinFlip.subtype = "fromRight" 
    coinFlip.duration = 0.5 
    coinFlip.repeatCount = 2 

    yourView.layer.addAnimation(coinFlip, forKey: "transition") 

この最後の行はUIViewでのみ機能し、SKSPriteNodeで実行しようとするとエラーが発生します。

誰かが私にこれを行う方法を説明したり、SKSpriteNodeのこのアニメーションを作成する別の方法を私に示すことができれば、それは大歓迎です。

+0

https://objectivec2swift.com/#/home/converter/ – penatheboss

+1

um UIKitとSpriteKitは異なる動物で、コードは動作しません.Sprite Kitには私が知っているものはありませんあなたがネイティブに探しているものを達成するには、3D回転エフェクトを作成し、そのようにアニメートするテクスチャを作成する必要があります。 – Knight0fDragon

+0

私は考えました...スプライトキットでこのタイプのアニメーションを作成する別の同様の方法はありますか? – Nik

答えて

1

コインの額を減らして増やすことで紡ぎ込み効果を作り出したのですが、colorBlendFactorを変更して、コインが光に当たらないように暗く見えるようにしました。ここで

は私のコードです:

let scaleSequence = SKAction.sequence([SKAction.scaleX(to: 0.1, duration: 0.75), SKAction.scaleX(to: 1, duration: 0.75)]) 
let darkenSequence = SKAction.sequence([SKAction.colorize(with: SKColor.black, colorBlendFactor: 0.25, duration: 0.75, SKAction.colorize(withColorBlendFactor: 0, duration: 0.75)]) 
let group = SKAction.group([scaleSequence, darkenSequence]) 
fallingCoin.run(SKAction.repeatForever(group)) 

それは少し厄介だが、それは動作します。簡単に言えば、それはSKAction.groupを使用しているので、アクションは同時に実行され、各シーケンスが同時に実行されるように、グループ内のコインを黒くして「反転」させてSKAction.sequenceを入れます。また、すべての期間は0.75であることにも注意してください。このコードを使用する場合は、効果が損なわれないようにすべての期間が同じであることを確認してください。

xScaleを変更する代わりにコインを反転させるように見せるには、代わりにyScaleを変更します。

@Mobile Benのおかげで正しい方向に向いてくれました!

+0

今これは長い文です:)あなたはいくつかの別々の行にこれを置くことを考えましたか?私はSpriteKitにとても精通していて、SKActionは私のfavです:)しかし、何が起こっているのか分かりやすい場合でも、それは読めるわけではありません。いくつかのステートメントでそれを打破すると、このコードはもっと良くなります。 – Whirlwind

+0

@Whirlwindええ、笑。これは私が速く/ SpriteKitの "キャリア"の早い段階でその行を書いたからです。私は今それを修正するつもりです – Nik

関連する問題