問題タブ [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.
swift - iOS Swift didBeginContact が呼び出されない
過去 2 日間、2 つの SKSpriteNode に衝突を登録させてdidBegin#contact
.
両方のオブジェクトにビット マスク ' categoryBitMask
'、' contactTestBitMask
' および ' ' を設定しました。collisionTestBitMask
また、両方の ' 'dynamic
プロパティを' 'に設定しましたtrue
initPhysics()
物理ワールドを正常にセットアップしているようです。
私が期待しているのはdidBegin#Contact
、それが呼び出されることだけですが、そうではありません
swift - SwiftのSKPhysics - 速度プロパティのジッターを下げる
通常、JBox2D のような 2D 物理エンジンでは、ユーザーがシミュレーションを「スローモーション」で実行したい場合、シミュレートされた世界が反復する値を減らすだけです。たとえば、60 fps での通常の動きの場合、ステップは 1/ になります。物理世界がフレームごとに前進する場合は 60。
しかし、swift を使用した xcode 6 のスプライト キットの SKPhysics クラスでは、「.speed」と呼ばれるプロパティしか表示されません。これを減らすと、10 フレームごとに 1 回物理体を更新するぎくしゃくした混乱が発生するだけでした。
SKPhysics の世界に大きなグリッチのある動きをせずに、より小さな増分で時間をかけて反復させるための特定のプロパティまたはトリックはありますか?
ios - CoreDeviceMotion が機能せず、物理世界の重力を更新できない
デバイスのモーション データを取得し、重力の方向を変更して、iPhone を傾けるとボールが傾斜方向に移動するようにしようとしています。このチュートリアルでは、メソッドはノードで加速度データと applyForce を取得しています。ただし、重力の方向を変更することでこの目標を達成したいと考えています (電話をどのように傾けても、重力は常に実際の物理的な重力の方向に沿っています)。
これが私のコードです:
上記のコードでは、CMDeviceMotion を使用して重力データを取得し、重力値をphysicsWorld.gravity に渡します。アプリを実行すると必ずクラッシュします。
Xcode は、gravityUpdate() 関数にバグがあることを示していますが、見つけられません。誰かがこの問題を解決するのを手伝ってくれることを願っています。または、重力をシミュレートするより良い方法を教えてください。ありがとう!
ios - 動きの速いスプライトで didBeginContact が呼び出されない
ユーザーがメイン スプライトをドラッグしているゲームがあります。ユーザーがメイン スプライトを非常に速くドラッグした場合を除いて、メイン スプライトは他のスプライトと問題なく衝突します。メイン スプライトがすばやく移動しているときに、物理ボディが互いにちょうど通り過ぎて、2 つのスプライトが突然重なり合うことがあります。didBeginContact でヒット カウントをログに記録するブレークポイント セットがありますが、ヒットしません。
スプライトが動き、didBeginContact でカバーできる速度に制限はありますか? ゲームサイクルが衝突を処理できるよりも速くスプライトを動かすことをユーザーに許可していますか?
繰り返しになりますが、スプライトが低速で移動している場合、物理は完全に機能しています。
ios - インパルスを SKNode に適用して画面上を移動し、衝突を検出する
画面全体にシェイプをプッシュし、Sprite Kit との衝突を検出する基本的なアプリを作成しています。私の最初の試みはmoveTo
、ノードでの使用でした。私が抱えていた問題は衝突で、オブジェクトはバウンドするのではなく、互いに回転していました。
applyForce
したがって、 ORを使用する必要があることがわかりましapplyImpulse
た。
この状況では、たとえば、開始時に画面外にある円があります。次に、ターゲットの出口点を決定し、その方向にノードを「フリック」/「プッシュ」します。
CGPoint として持っているターゲットの終了位置にインパルスを適用する方法がわかりません。これをCGVectorに取得する必要がありますが、何をする必要があるかわかりません。私は周りを見回して、いくつかの Ray tuts を見つけましたが、それらは applyForce または moveTo を示しているだけです。これを計算する方法がわかりません。