問題タブ [skfieldnode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3623 参照

swift - 放射状重力フィールドが迅速に影響するオブジェクトを選択する

Swift とスプライト キットを使用して Xcode プロジェクトに取り組んでいますが、放射状の重力フィールドの影響を受けるオブジェクトをどのように選択できるのか疑問に思っています。現在、2 つの星といくつかの惑星があり、各星には放射状の重力場があります。問題は、星が自身の重力場に引き寄せられることです。各重力場が1つの星とすべての惑星にのみ影響を与え、それが追っている星には影響を与えないようにするにはどうすればよいですか? categoryBitMask や fieldBitMask と関係があることは知っていますが、正確な方法はわかりません。前もって感謝します。以下は、星と重力場のコードです。その重力場がその星に影響を与えたくない.

0 投票する
0 に答える
320 参照

macos - RadialGravityField はしばらくすると気が狂います

Swift を使用して 2D 重力シミュレーターのように見える SpriteKit ゲームを作成しようとしていますが、オブジェクトが少し近づくと、狂った速度で反対方向に進みます。

minimumRadiusこれは、フィールドとphysicsBodyのcategoryBitMaskまたはプロパティに関連している可能性がありますがfieldBitMask、正確にはわかりません。

関連するコードは次のとおりです。

そして、問題の gif デモンストレーション:

問題のデモンストレーション

ご覧のとおり、問題を引き起こすためにオブジェクトが移動する必要がある距離はランダムに見えます。

0 投票する
1 に答える
552 参照

ios - 同じカテゴリの SpriteKit/SKPhysics RadialGravityField は常に互いに引き付け合っていますか?

SpriteKit で放射状の重力フィールドを使用しようとすると問題が発生します

同じ種類のオブジェクトは必要ありません (categoryBitMask で定義されているように、互いに引き付けられます)。

これが私がそれを行う方法です:

何を試しても、惑星は常に相互に引き付けられます (fieldBitMask を 0 に設定した場合を除きますが、もちろん、Star にも引き付けられなくなります)。この2行のコードは、星の重力場だけが惑星に影響を与えることを期待しています...

ドキュメントから:

"fieldBitMask : 物理フィールドのどのカテゴリがこの物理体に力を加えることができるかを定義するマスク。物理体が SKFieldNode オブジェクトの領域内にある場合、そのフィールド ノードの categoryBitMask プロパティは、論理演算を実行することによって、この物理体の fieldBitMask プロパティと比較されます。 AND 演算。結果がゼロ以外の値の場合、フィールド ノードの効果が物理ボディに適用されます。」

私は何か間違っていますか?

0 投票する
1 に答える
292 参照

sprite-kit - iOS 9 の更新後に SKFieldNode の位置が間違っている

SKFieldNodesiOS 8 では完全に正常に動作するコードがいくつかありましたが、iOS 9 以降、非常に奇妙な動作をするコードがいくつかあります。下の画像は、2 つのSKFieldNodes(赤いスプライトでマークされた) シーンと、SKEmitterNode金色のパーティクルを放出するシーンを示しています。

ここに画像の説明を入力

iOS 8 では、フィールドが粒子を引き付けて、磁石の先端に向かって「吸い込み」ます。iOS 9 以降、赤い矢印で示されているように、パーティクルは右上隅に向かって加速します。また、strength効果を目に見えるようにするために、フィールドの数を増やす必要がありました。

対応するコードは次のとおりです。

フィールド ノードが右上隅付近に配置されているように見えますが、赤い円の子ノードは異なって表示されます。