2016-12-31 15 views
1

これは実装のベストプラクティスに関する質問です。例として、Pixel Clawと呼ばれる簡単なゲームを参照します。Swift SKSpriteNode:複雑なスプライトテクスチャ?

SKSpriteNodeが「保持」する可能性があるものは可変ですが(可能性は限定されています(例:4つの異なるオブジェクトなど)、ピクセルクローからの爪に似たSKSpriteNodeがあるとします。

ノードSKSpriteNodeが保持しているのは、それ自体の代理店はありません。

したがって、私の質問は:それが良いようになど爪、爪保持オブジェクトA、爪保持オブジェクトb、など、さまざまなテクスチャを使用するか、2 SKSpriteNode秒を持っているし、次のように爪の質感とSKSpriteNodeを配置していますオブジェクトのテクスチャでSKSpriteNodeに移動しますか?

私は爪のゲームを作っているわけではありませんが、それは私の頭の中に飛び出した最初の例に過ぎませんでした。前者はよりシンプルです。テクスチャを切り替えるだけです。テクスチャをより一般化することができます。

後者が一番良い解決策であれば、2つのスプライトの動きをどうやってペアにすることができますか?

答えて

1

特に、オブジェクトaとbがある時点で爪から脱落する可能性がある場合は、2番目の方法を使用します。

爪のテクスチャ、オブジェクトのテクスチャ、オブジェクトのテクスチャを作成する必要があります。

オブジェクトを爪と同期して移動させるには、オブジェクトを爪ノードのとして追加するだけです。このようにして、爪を動かすとオブジェクトも動くでしょう!

オブジェクトを子として追加する前に、オブジェクトに親がないことを確認する必要があります。そうであれば、それを爪の子として追加する前に親から削除する必要があります。爪からオブジェクトを「解放」するときも同じことが適用されます。最初にそのオブジェクトをその親(爪)から削除してから、それを目的の親の子として追加する必要があります。

+0

それは非常に洞察力のある答えです、私は親子関係が 'SKSpriteNode'のように働いていることを認識しませんでした。多分疑似コードを提供できますか? – SumNeuron

+0

@SumNeuron最も難しい部分は、実際にテクスチャを描画することです。最初に 'object.removeFromParent()'を呼び出して、それが親を持たないようにします。次に、 'claw.addChild(object)'を呼び出してオブジェクトを子として追加します。また、 'object'の位置とアンカーポイントを設定して、正しい場所にあることを確認する必要があります。あなたはif文も必要ありません。 – Sweeper