問題タブ [skphysicsjoint]
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.
ios - SKPhysicsJointFixed を使用して 2 つの SKSpriteNode を結合する方法
2 つの SKSpriteNode を SKPhysicsJointFixed で結合しようとすると、まったく接続されていないかのように分離します。私がしていることは何もうまくいかないようです。これが私のコードです...
前もって感謝します。
ios - スクロールする SpriteKit ゲームで SKPhysicsJoints を使用できますか?
これは Apple による大きな見落としのようですが、SKPhysicsJoints はシーン座標にアンカー ポイントが設定されているため、あらゆる種類のスクロール ゲームを実行できなくなります。
SpriteKit でカメラをシミュレートするには、すべてのゲームプレイ要素を含む WorldNode を作成し、それをシーン内でパンします。残念ながら、これを行うと、ゲーム内のすべてのオブジェクトのシーン座標が、ワールドをパンするたびにフレームごとに変更されます。これにより、ジョイントのアンカー ポイントが壊れ、事態は悪化します。
ジョイントのアンカー ポイントを変更する方法さえないので、フレームごとに座標を更新する方法さえありません。スクロール ゲームで SKPhysicsJoint を使用することは選択肢ではないようです。
誰もこれを回避する方法を知っていますか?
ios - SKSprite が SKPhysicsJointPin にアタッチされている場合、衝突に反応しないのはなぜですか?
下の画像では、3 つのスプライトが表示され、すべてに SKPhysicsBodies がアタッチされています。赤い円はスイベル ポイントで、青い四角形は SKPhysicsJointPin でスイベルに取り付けられた「パドル」です。パドルは正常に機能します。重力によって前後に揺れます。そのエリアに他のフィールドがある場合は、パドルも小刻みに揺れます。
ただし、うまくいかないのは衝突です。緑色のボールがパドルに当たると、緑色のボールは跳ね返りますが、パドルはまったく何もしません。ボールの質量 = 1.0、パドルを質量 = 0.1 に設定したので、ボールがパドルに当たったときにボールが非常に目立つ効果を持つはずです。
私は何が欠けていますか?
ios - 伸びる「ロープ」の作成
主人公が「ロープ」を撃ってレベルをスイングするSpriteKitでゲームを作ろうとしています(スパイダーマンっぽいと思います)。ロープを作って、それをプレイヤーやさまざまなスプライトに取り付けるのは問題ありませんが、「射撃」の部分についてはどうすればいいのか本当にわかりません。
私の現在のロープは、これ ( https://www.youtube.com/watch?v=7jWdcbmnmKQ&hd=1 )と同様に構築されており、いくつかの別個のパーツが を使用して接続されていSKPhysicsJointPin
ます。と の両方を使用して、ロープを撃つためにいくつかの異なるアプローチを試しましたが、スムーズに機能するものはapplyImpulse/Force
ありSKActions
ません。
要約すると:
- 特定の方向に伸びることができるロープを作成するためのベスト プラクティスは何ですか?
これはすべて学ぶことであり、完成したコードが本当に必要だとは思わないので、正しい方向への一般的なポインターだけで問題ありません。
sprite-kit - shouldEnableLimits が true で、lowerAngleLimit と upperAngleLimit が設定されている場合の SKPhysicsJointPin の動作が正しくない
私は現在、親ノード(物理体が添付されていない)と、それぞれが円体で構成される多くの子ノードで構成されるラグドールフィギュアを持っています。SKPhysicsJointPin
円は、次のように、各円の間に を使用して互いに接続されます。
それぞれSKPhysicsJointPin
に があり、現在、とshouldEnableLimits = true
にそれぞれ -0.05 と 0.05 の値を使用しています。lowerAngleLimit
upperAngleLimit
これは非常にうまく機能し、図形が全体的に上下逆さまになる場合を除いて、形状が過度に変形するのを防ぎます。その場合、すべての関節が突然収縮しようとします。
- 参照:ビデオ
フィギュアが完全に逆さまになると、関節は非常に速く収縮します。彼が再び回転すると、すべての関節が正常に戻ります。なぜこれが起こるのですか?関節の正しい角度を維持するにはどうすればよいですか?
編集1:
奇妙なSwiftのバグが原因であった場合に備えて、Objective-Cでプロジェクトを書き直そうとしました。この問題はまだ Objective-C で発生していることが判明したため、Swift タグを削除しました。
現時点での私の最善の推測は、ジョイントが接続されているボディがいずれかの方向に 180° 以上回転している場合、ワールドに対するジョイントの角度が SpriteKit によって誤って計算されることです。基礎となる Box2D ジョイント。
ボディのワールド アングルに合わせて角度の下限と上限を継続的に更新する必要があるかどうかはわかりませんでしたが、ボディが逆さまになりそうになったときのように更新する必要はないようです。関節が正常に機能しなくなります。とにかく実験を続けます…</p>
編集2:
SpriteKit がzRotation
値を -180° から 180° の間に保つように (正当な理由があると思いますが) 変更しているため、問題が発生することはかなり確信しています。たとえば、ノードが時計回りに回転していて、-180° に達した場合、SpriteKit はその値を自動的に +180° に戻します。このラップアラウンドが関節の異常な動作を引き起こしていることはかなり確信しています。それを打ち消す方法を見つける必要があるだけです…</p>
編集3:
この問題を示すサンプル アプリケーション (ビデオを含む) をアップロードしました。これは、最初に Apple から要求されたものです: Xcode Project / Video
objective-c - SpriteKit iOS8 の異なる物理的動作
物理学のさまざまな動作に気付きました。たとえば、次のようになります。
チェーン用に多くの SKSpriteNode と SKPhysicsJointLimit を使用してロープをコーディングしました。最後に、2 つの SKPhysicsJointSpring を 2 つの物理無効 SKSpriteNode に接続しました。
iOS7 では魅力的に動作しますが、iOS8 ではロープに「歪み」があります。これらは写真です。小さな四角形はタッチ用のジョイントで、大きな四角形はトリガーです。
iOS8 ではキャンディーの周りに「U」字の歪みが見られますが、iOS7 では見られません。なんで?
iOS7 ランチャーhttp://i.imgur.com/yRt6UfB
iOS8 ランチャーhttp://i.imgur.com/WE3Esuu