問題タブ [skphysicsbody]

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 に答える
2219 参照

ios - この SKPhysicsJointPin がこれら 2 つのスプライトを一緒に保持しないのはなぜですか?

私は明らかにSKPhysicsJointをよく理解していませんが、もちろんAppleのドキュメント以外には、Web上にはまだほとんど情報がありません。次のコードの何が問題なのですか。頭と首を永久に結合したままにしておく必要があると思います。私の意図は、ピンで 2 枚の紙のように振る舞うことで、少し回転させることができますが、完全にバラバラになるわけではありません。 . このコードを実行すると、SKScene の下部に落ちて地面にぶつかり、頭が体から落ちます。

たぶん、関節はそれらと一緒に動いていないのでしょうか?

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

ios - SpriteKit を使用してプール キュー / 簡略化されたピンボール スタイルのプランジャーを作成するにはどうすればよいですか?

私は、ユーザーが画面の端から出てくる「ロッド」をトリガーして、画面上の要素 (ボール) を移動できるようにするゲームに取り組んでいます。これらの発射体は、おおよそプール キューに似ています。または、ピンボール プランジャーかもしれませんが、「ロードされた」位置 (ほとんどが画面外) から開始し、トリガーされると排出され、すぐに後退します。

Sprite Kit でこれらをどのように構築すればよいかわかりません。

ゲームは PhysicsEngine を使用し、画面上のボールは重力の影響を受け、ロッドと衝突したときに移動する必要があります。ただし、ロッドは重力の影響を受けたり、ボールと衝突したときに移動したりしてはなりません。ボールと接触したかどうかに関係なく、ロッドは単に後退する必要があります。

ロッドの affectedByGravity プロパティを設定できることに気付きました。ただし、ボールと衝突すると、まだわずかに変位するためです。それらを所定の位置に「固定」または「ペグ」するにはどうすればよいですか? SKPhysicsSlidingJoint を使用する必要がありますか? もしそうなら、誰かがオンラインで例に出くわしたことがありますか? これを行う簡単な方法はありますか?

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

objective-c - SKアクションスケール物理体

どこから始めればいいのかよくわかりません。作成時のサイズを反映するSKSpriteNodeと に保存されている円のイメージがあります。physicsBody

SKActionただし、画像のサイズを縮小するために を使用していますが、physicsBody は同じサイズのままです。物理ボディを縮小するにはどうすればよいですか?

私のコード:

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

objective-c - SKPhysics身体変化アニメーション/物理速度

物理体のアニメーション/物理速度を変更する方法はありますか?

update メソッドを 1 秒間に 60 回呼び出すようにしたいのですが、画面上のすべてをゆっくりと動かしたいのですが、同じプロパティ値を保持します (つまり、速度 (10, 10) は同じことを行います)。スローモーションになる..)

これを誘発する方法はありますか、それとも組み込み関数がありますか?

私が考えることができる 1 つのことは、すべての動きのプロパティ値を 2 で割り、重力をその半分にすることですが、重力を設定することはできないと思いますし、とにかく物理的にうまくいくかどうかはわかりません...

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

ios7 - SpriteKit の物理演算ボディは常に直立

重力とダイナミックの影響を受ける物理ボディを持つスプライトノードがありますが、物にぶつかると回転します。

Y 軸の重力には物理体のみを使用しており、他には何も使用していません。横に何かに当たったとき、その影響を受けてほしくない..

どうすればこれを達成できますか?

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

objective-c - applyForce(0, 400) - SpriteKit の不一致

だから私はphysicsBodyと重力がそれに影響を与えるオブジェクトを持っています。ダイナミックでもあります。

現在、ユーザーが画面に触れると、次のコードを実行します。

applyForce(0, 400)

オブジェクトは約 200 上昇し、その後重力により下降します。これは時々しか起こりません。また、オブジェクトが Y 方向に 50 単位しか移動しない場合もあります。

パターンが見つかりません... プロジェクトをドロップボックスに置いたので、誰かが見たいときに開くことができます。

https://www.dropbox.com/sh/z0nt79pd0l5psfg/bJTbaS2JpY

編集: これは、プレイヤーが衝撃の後、地面から少し跳ね返ったときに発生するようです。プレイヤーがまったく跳ねないようにする方法はありますか?

編集 2: 摩擦パラメーターを使用してこれを解決しようとしましたが、摩擦が 0 の場合にのみプレーヤーが「ジャンプ」できるようにしました (これは、プレーヤーが空中にいるすべてのケースであると考えられます) が、摩擦は 0 より大きいように見えます常に。プレイヤーがオブジェクトに触れているかどうかを検出する方法はありますか (y 位置を使用する以外に)。

ありがとう

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

ios - スプライト キットの bodyAtPoint と bodyInRect は正しくない値を返しますか?

画面上のポイント 0.0 に 1 つのシーン、1 つのスプライト ノード 20x20px の非常に単純なサンプル コードを作成しました。呼び出すscene.physicsWorld bodyAtPointと、34x34 などのポイントでもこのノードが返されます。しかし、ポイント 35x35 では を返しますnull。したがって、基本的に、両方の軸の 0px から 34px までのすべてのポイントがこのノードを返します。35px から開始すると、もう返されません。スプライトが目に見えて 20px 20px で終了する場合、何が原因でしょうか? にも同じ動作が見られbodyInRectます。

サンプルコードは次のとおりです。

コンソールログは次のとおりです。

と の両方で、Apple のバグである可能性はnodeAtPointありnodeInRectますか? 信じにくいです。しかし、コードが非常に短いため、どこでミスを犯したのかわかりません。どんな助けでも大歓迎です。

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

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

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

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

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

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

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

私はこれをします :

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

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

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

ios - SpriteKit Physics: 異なる z 平面上にある場合は無視します

SpriteKit では、互いに衝突する 2 つのノードを持つことができますが、別のノードが導入されると、物理的な動作がどのように変化しますか?

たとえば、次の 3 つのノードがあるとします。
- Object
- Object_Hole
- Player

したがって、プレーヤー (オレンジ色の円) とオブジェクト (青い四角形) を含むシーン:

ここに画像の説明を入力

上記のシーンでは、プレーヤー (円) が重力の影響を受け、オブジェクト (正方形) と衝突します。物理ボディ、カテゴリ、衝突ビットマスクを使用して、これがどのように機能するかを知っています。

ここで、Object_Hole (緑の四角) を紹介します。

ここに画像の説明を入力

上のシーンでは、Object_Hole (緑の四角形) がオブジェクト (青の四角形) の上に重なっています。これは、同じ z 平面またはより高い平面上にあります。

Object_Hole がある領域で、Player (円) のphysicsBody がオブジェクトと衝突しないようにすることはできますか?

オーバーレイ ノードを追加するよりもこれを達成するためのより良い方法がある場合は、お知らせください。そうでなければ、それは可能ですか?

ありがとう!

0 投票する
7 に答える
7237 参照

ios - Physicsbody がノードのアンカー ポイントに付着しない

私のシーンには、長方形と同じサイズの物理ボディを持つ長方形がたくさんあります。すべてのオブジェクトを CGPointZero に固定するのが好きですが、そうすると、物理ボディが真ん中に固定されたままになることに気付きました。つまり、私の物理体の位置は、視覚的表現の 100 ピクセル下の左にあります。

コードの簡単なスニペットを次に示します。

この問題を解決するためのアイデアやアドバイスをいただければ幸いです。たとえば、物理体を視覚化できれば役立つかもしれませんが、方法がわかりません。

更新:アンカーポイントを設定せず、長方形を再配置するだけで問題を解決しました。したがって、問題はまだ存在しますが、回避策があり、回避策はうまく機能しています。