問題タブ [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.
sprite-kit - 同じ SKPhysics ボディ オブジェクトを持つ複数のスプライト
スプライトキットを使って空港シミュレーションゲームを作っています。SKPhysics ボディを追加する前のゲーム状態のレイアウトはそのままで、SKPhysicsbody がノードに設定されると、スプライト ノードが警戒します。
これは、SKPhysicsBody なしでシーンに追加しているものです。多くのゲートがあり、ゲートの隣にフライトが立っている空港を想像してみてください。それが、以下のコードで達成しようとしていることです。
@実装 MyScene
メソッドのコード [self setupFlightAtPoint:xPos]
平面オブジェクト法
これまでのところ、すべて問題ないように見えます。添付の Scene1 という画像を参照して、上記のコードで何が表示されるかを確認してください。
物理ボディをプレーンスプライトに設定しようとすると、ここから問題が始まります。私の「newPlane」メソッドでは、以下のコードを追加しています
Physicsbodies を設定した後、私のシーンは次のようになります
現在、シーンに平面スプライトが 1 つしか表示されていませんが、その理由がわかりません。
sprite-kit - SpriteKit で L 字型の SKPhysicsBody ノードを構築するには?
L 字型の多角形がありますが、これは明らかに凹状であるため、複数SKPhysicsBody
の を使用する必要があります。スプライトを含むマスター ノードと、L を構成する物理ボディを持つ長方形のノードを持つ 2 つの子ノードを試しました。これを試してみましたが、オブジェクトは物理の影響を受けません。
私が見逃しているのは、マスターノードに物理ボディが接続されていないことです。これが問題になる可能性がありますが、そこに何を配置すればよいかわかりません。
シンプルな長方形のボディでスプライト ノードをテストしたところ、問題なく動作しました。
ios - SKPhysicsWorld スケーリングされたノードで物理をシミュレート
ズームインおよびズームアウトできる物理体のレベルを含む SpriteKit ゲームを構築しようとしています。ズーム レベルを変更すると、物理の世界が期待どおりに動作せず、奇妙なことが起こります。
物理ボディを持つノードがアニメーション化し、期待どおりに動作します。レベルのズームは、すべてのゲーム要素を含む単一の「ワールド ノード」のスケールを調整するピンチ ジェスチャで処理されます。これは、シーンのスケーリングが恐ろしいことを行うように見えるため、これを処理する便利な方法であり、ワールド ノードの上に任意のゲーム インターフェイス要素用の個別のスケーリングされていないノードを簡単に追加できます。
ズームは次のように機能します。
通常のズーム レベルでは、すべてがうまく機能し、視覚的には、さまざまなズーム レベルでもすべてがうまく見えます。問題は、ズームが変更されると、物理体が他のオブジェクトに対して同じ速度ではなく、同じ速度で移動し続けることです。その結果、シーンをより多く表示するためにズームアウトすると、すべてがはるかに速く移動します。
これは、物理ワールドがシーンにのみ接続されており、「ワールド ノード」の調整されたスケールを認識していないという事実の副作用のようです。ただし、物理体は相対空間内でノードを同じ速度で移動し続ける必要がありますか?
SpriteKit がそのように動作する理由、またはこれを回避する方法について、誰かが洞察を提供できますか?
ios - SKNodeの「原点」とは?
Docs forSKPhysicsBody
bodyWithCircleOfRadius:
は次のように述べています。
所有ノードの原点を中心とする円形の物理ボディを作成します。
原点はノードの位置ですか?もう見つかりませんでした。