2016-09-19 4 views
1

はまだ私のスペースインベーダーのクローンに取り組んで、私は、画面の一番下に破壊拠点を追加したい:私は持っていることによって、私はシールドの外観を変更することができますどのように出て働いてきたテクスチャが連続しなくなるまでスプライトを変形する - 接触を維持する方法 - 検出?

enter image description here

爆弾とシールドがお互いに接触してからdidBegincontactに入ると、爆弾マスクとシールドの現在のテクスチャからSKCropNodeを作成し、ビューのtexture(from: node)メソッドでレンダーしたテクスチャを取り、シールドのテクスチャを& physicsBodyを新しいテクスチャから更新します。

しかし、シールドのテクスチャがもはや連続していないように、シールドの中心に吹き抜けた穴がある場合(例えば、画像の一番左のシールド)、生成された物理は、テクスチャのしたがって、シールドの右手部分に当たる爆弾は検出されません。

シールドを複数に分割して接触検知機能を維持するにはどうすればよいですか?

考えられる解決策:

  • どういうわけか新しいテクスチャをスキャンし、 はどちらか SKPhysicsbody(bodies: [SKPhysicsBody])を使用して、単一SKSpriteNodeに割り当てられている複数のphysicsBoiesを作成します。テクスチャの左上から SKPhysicsBodyが生成された場合、 はテクスチャを90度回転させて4回回転させ、4 physicsBodies?
  • (shiled
    の破壊された部分が透明であるように)アルファマスキングのいくつかの並べ替えを使用して、
    元の形状にシールドのphysicsBodyを維持し、DBCが呼び出されたときに、画素の色をチェック接触点における /爆弾の下に - 彼らは「クリア」している場合は、 何の行動も取らないし、爆弾が
    シールドの明確であることを示すと呼ばれる爆弾が
    didEndContactまで妨害されないから落下することができます。

  • は爆弾の下のピクセルの色を確認し、その後、爆弾とシールドとの間 シンプルintersectsRectを使用する - 明確な場合は、 何もしません。

=========================================== ========

更新:分割されていない場合のスプライトテクスチャの損傷については下記を参照してください。茶色のベースは、最初のダメージを示す元のものです(物理ベースは元のベースを示し、テクスチャはダメを示しています)。

enter image description here

更新:テクスチャが分割されたときに物理学のボディは、以下を参照してくださいグリーンベースは、それが再計算物理学のボディだきました。茶色は元の盾、小さな窪みは「新しい」傷です。 physicsBodyは、画像の左側部分にのみマッピングされます。

enter image description here

+0

シールドテクスチャが変更されるたびに、SKPhysicsBody(テクスチャ)を使用するだけで、新しいテクスチャで新しいボディを与え、正しいボディを形成していない場合は、新しいテクスチャをtempスプライトノードに配置してくださいあなたは何が生成されているかを見ることができます、私はほぼ正の私はそれらの真ん中に穴がある前に体を作成しました。 – Knight0fDragon

+0

@ Knight0fDragon - 何か間違っていない限り動作しません。私の更新を参照してください。 –

+0

私は時間が悪くなったら、何が来るかを見てください。 – Knight0fDragon

答えて

1

だから私はベースのSKTextureを変形させるとあきらめ、代わりに約30の小ブロックとしてベースを実装し、自分のphysicsBodyとそれぞれ、それがヒットだ後は完全に除去され、それぞれが。

私はパフォーマンスについて懸念していましたが、これらは静的ブロックであり、これまでのところパフォーマンスは良好です。全体的なグラフィック効果はあまりにもOKです:

enter image description here

が、私は彼らに、より小さく、より-dameged 1でそれがヒットした最初の時間を、各ブロックのテクスチャを置き換えると荒削りと実験を与えるために、ブロックのテクスチャを変更することができ、より崩れた外観のために。

+0

お役立ち情報これをテストした最低のデバイスは何ですか? – Confused

+0

現時点では私の6秒です。 –

+0

DOH!それはすべての時間の中で2番目に速い電話です。低解像度とCPU/GPUのコンボは、驚くほど流動的です。おそらく、iPhone SEは少し速いです。 1秒間に手をつけて安く見つけられれば、iPhone 6 Plusは新しいiPhone 4です。これは苦労しています。 – Confused

関連する問題