問題タブ [skphysicsworld]

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 投票する
4 に答える
8717 参照

ios7 - iOS7 SKScene スプライトを画面の端から跳ね返す方法は?

iPad の画面内でボールが跳ねるゲームを作成しています。ポンゲームに似ています。SKScene の SKPhysicsWorld には重力プロパティがあり、オブジェクト同士の衝突方法も制御していることがわかりました。

スプライトの端が画面の端に衝突したかどうかを自動的に検出できる方法はありますか? または、独自の衝突コードを作成する必要がありますか?

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

ios7 - 参加後の奇妙なSKPhysicsWorldの動作

SKSpriteKit を使って釣りゲームを作っています。フック用といくつかの魚用のスプライト ノードがあります (このために SKSpriteNode クラスを拡張しました)。理想的には、魚がフックに引っ掛かったときの動作は、魚の口がフックの先端に移動することです (アクションを使用してこれを行います) :

次に、魚が少し下に回転して、フックにぶら下がっていることをシミュレートします (別のアクション:)

これらをそのまま実行すると思います:

これは多かれ少なかれ機能します(魚の方向に基づいてねじれを解決します)

後でやりたいことは、魚と釣り針の間にジョイントを作成することです。釣り針を動かしたときに、すでに魚が釣られていれば、魚は付いてきます。

私はこれをします :

ジョイントなしでコードを実行すると、魚はフックにとどまり回転します。ただし、ジョイントが作成されてアクションが実行されると、上からの回転アクションは呼び出されません (ただし、フックへの移動は呼び出されます)。

なぜこれが起こるのか、私には少しもわかりません。誰にも指針がありますか?

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

ios - スプライト キットの物理演算のクロックを高速化する

スプライトキットの物理世界を使用したアニメーションがあります。物理を「早送り」して、アニメーションを表示せずに結果またはパスを取得する方法があるかどうかを調べていました。私はphysicsWorldを見ましたが、これについて何も見ませんでしたか? どうすればこれを行うことができるかについてのアイデアはありますか?

基本的に、ユーザーが実行を決定する前に、アニメーションの結果の場所をユーザーに表示したいと考えています。

0 投票する
2 に答える
3086 参照

ios - SKPhysicsContactDelegate が機能しない

次のコードがあります。

私のシーンで:

ご覧のとおり、最初から船とエネルギーの両方を同じ場所に設定しているため、常に衝突します。

両方のクラスについて、init メソッドに次のコードがあります。

私が見つけたのは、NSLogが呼び出されないため、物理的な衝突検出が機能しないことです.Apple開発者のチュートリアルからたくさん読んだことがあります. 画面上の船とエネルギーの画像が衝突しているのが見えます

0 投票する
3 に答える
156 参照

objective-c - SpriteKit で衝突に関与するノードの数を検出する方法

敵の発射体をターゲットにして 1 つのノードから発射体を発射するシューティング ゲームを作成しています。発射物が 2 つの敵ノードに同時に接触すると、接触デリゲートが 2 回呼び出されます。プレイヤーに 2 倍のボーナスを与えるために、発射体が接触したノードの数を知りたいです。

これを達成するためのクリーンで効率的な方法を提案できる人はいますか?

0 投票する
2 に答える
1766 参照

objective-c - Physics SKSpriteNode の子で SpriteKit ゲームを一時停止します

に動的物理ボディを持つ SKSpriteNode がありSKNode *_fgLayerます。

ここで、ゲームを一時停止または一時停止解除するときに、SKSpriteNode が所定の位置に留まり、回転したり落下したりしないようにします。単純_fgLayer.paused = YES;に SKSpriteNode を使用すると、所定の位置にとどまらず、回転して落下します。physicsBody.dynamic = NO;一時停止時と一時停止解除時 に設定するphysicsBody.dynamic = YES;と機能します。

ただし、数回試行した後、常に次のクラッシュが発生します。

"Assertion failed: (typeA == b2_dynamicBody || typeB == b2_dynamicBody), function SolveTOI, file /SourceCache/PhysicsKit/PhysicsKit-4.6/PhysicsKit/Box2D/Dynamics/b2World.cpp, line 670."

physicsBody.dynamic = NO;ですから、aと back の設定はうまくいかないと思います。

ゲームが一時停止されたときに動的物理体を一時停止してその場に留まる方法を知っている人はいますか?

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

sprite-kit - スプライト キットの SKPhysicsWorld にジョイントを追加した後、SKPhysicsJointLimit maxLength を変更できません

そこで、基本的にピン ジョイントを使用して結合された四角形である SKSpriteNodes のリングを作成しました。このリングを SKShapeNode サークル内で中断したいと思います。SKPhysicsJointLimit を使用して、各ノードを SKShapeNode に接続しました。

これはすべて正常に機能し、maxLength を主観的に決定する「正しい」数値に設定すると、探している効果が得られます。

簡単にアクセスできるように、すべてのリミット ジョイントを配列内に格納し、physicsWorld に追加しました。

コードを正しくするのに少し手間がかかりましたが、これらはすべて正しく期待どおりに機能します。これらはうるさいです!

ここで、私が本当にやりたいことは、maxLength を大きな数値に設定し、時間の経過とともにその数値を徐々に減らして、リングが「ゆるくぶら下がっている」から「引っ張られた」状態になるようにすることです。

私はさまざまなアプローチを試みましたが、どれもうまくいかないようです。まず、私は試しました:

しかし、これはまったく何もしませんでした。

私は、physicsWorld にジョイントを追加した後、ジョイントのプロパティを変更できないように見えることに最終的に気付きました。そこで、シーンの update メソッドで次のようなことを試しました。

しかし、これもうまくいきませんでした。エラーが発生しました:

明らかに削除したのに。だから、ここからどこへ行けばいいのかわからない。ジョイントに関するドキュメントとインターネット上の既存の資料は非常に薄いです。次に試みるのは、すべてのジョイントを削除して追加することだと思いますが、それは非常に面倒です。

どんな考えでも本当に役に立ちます!

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

objective-c - SKPhysicsJoints はすべてかなりぐらつき、弾力性があります

それで、私はそれを一緒に保持する(ピンと固定)10個ほどのジョイントを持ついくつかの物理体で構成されるオブジェクトを持っています。それはうまく機能しますが、関節がどれほどグラグラしているかに驚いています. 「固定」とは、それらを1つの物理体にマージした場合と同じくらい固定されていると想像しますが、使用できないほどかなりぐらついています。また、ピンを使用すると、接続オブジェクトに力が加えられると、各物理体のポイントは互いにかなりの遊びを持っているように見えます。これは常に当てはまり、関係する両方の体の動きが制限されることはありません。

関節をもっと硬くして弾力性を減らしたいです。誰かがこれの解決策または理由を見つけることができましたか? さらにいくつかのジョイントを追加しても、剛性が高くなるわけではないようです。