問題タブ [skspritenode]

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

objective-c - 新しい SKSpriteNode を SKScene に追加すると、断続的な遅延が大きくなります

標準の UIViewController ( TestViewController ) があり、このコントローラーのviewWillLayoutSubviewsメソッドで、新しい SKView サブクラス ( TestView ) をインスタンス化し、サブビューとしてコントローラーのビューに追加します。さらに、ユーザーが SKScene サブクラス ( TestScene ) でアクションを制御できるようにするためのボタンをいくつか追加します。TestSceneは、TestViewのinitメソッドでインスタンス化されます。TestViewがサブビューとしてTestViewController のビューに追加された直後に、単に呼び出すTestViewのメソッドである[testView presentScene]も呼び出します。[自己 presentScene: testScene] .

TestViewControllerで前述のボタンを押すことは、新しい SKSpriteNode サブクラス ( TestSpriteNode ) をインスタンス化、子としてシーンに追加する( TestViewを介して) TestSceneでメソッドを呼び出すことを意味します。これは機能しますが、最初のTestSpriteNodeが追加されると、新しいスプライトをレンダリングするTestSceneで断続的に長い遅延が発生するという問題があります。時々それは完全に機能しますが、ほとんどの場合は動かなくなり、ボタンを複数回押すと複数のスプライトが一度に表示され、その後すべてが完全に機能します. この問題は、シミュレーターと私のデバイスで発生することに注意してください。

TestScene の- (void)didMoveToView:(SKView*)viewに新しいTestSpriteNodeを追加しようとしましたが、TestSpriteNodeがすぐに表示され、ボタンを押して新しいTestSpriteNodeを追加すると遅延が発生します。ボタンを押すとTestSceneで呼び出されるメソッドにブレーク ポイントを追加すると、すぐに呼び出されることがわかりますが、追加されたTestSpriteNodeはすぐにはレンダリングされません。

動的に追加された SKSpriteNodes のレンダリングの遅延に対処する回答が既にある場合は、事前にお詫び申し上げます。私はそれを見つけることができませんでした。新しい SKSpriteNodes を SKScene に追加することについて、私が誤解していることはありますか?

0 投票する
6 に答える
5411 参照

sprite-kit - iOS SKSpriteNode - 画面を離れる

領域境界を残した SKSpriteNode を Parent から削除する方法はありますか?

例えば:

正しい方向に向けてください。四角形をチェックして列挙する更新メソッドですか、それとも適用できるアクションですか。私はドキュメントを調べましたが、それを見つけることができないようですが、メモリを節約するので簡単に実装できると思いました

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

ios - スプライト キットでの衝突検出

Sprite Kit で衝突検出を使用しています。それは機能しており、スプライトがパスを横断するのを妨げています。ただし、didBeginContact: で通知を受け取っていません。また、衝突が発生したときに物理エンジンがどのように応答するかを制御できないようです。

SKAction followPath:asOffset:orientToPath:duration を使用して、さまざまな車 (SKSpriteNodes) が次のパスを移動しています。

以前は、2 台の車が道を横切った場合、一方が他方を追い越し、両方とも通常通り続行していました。衝突検出を実装するために、次の変更を加えました...

これを @interface に追加しました:

これを @implementation に追加しました:

これを私のinitメソッドに追加しました:

青い車を作成します。

また、赤い車も作成します。

他の車もありますが、何が問題なのかがわかるまで、この2台を使用しています. 任意の 2 台の車が衝突した場合に通知を受け取りたいです。そのため、carCategory という 1 つのカテゴリだけを使用しています。

最初の問題は、通知が届かないことです。私はこれを持っていますが、コンソールに何も記録しません:

2 つ目の問題は、2 台の車が道を横切ると、お互いにコースから外れてしまうことです。これは問題ありませんが、衝突の処理方法を管理できないようです。奇妙なことは、車の作成方法の両方に対してこれを行っても何も変わらないことです。

衝突検出は、両方の車でコメントアウトされた 3 行でも同じように機能します。これは私には正しくないようです。衝突検出は、次の行もコメントアウトした場合にのみ停止します。

だから私の主な質問は: contactTest が何も報告しないのはなぜですか? 2 つ目の質問は、categoryBitMask、collisionBitMask、または contactTestBitMask をどの車にも割り当てていないのに、衝突検出が行われるのはなぜですか?

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

ios - iOS SpriteKit app bundle内のフォルダから画像を含むノードを作成する方法は?

メインバンドル内で参照されるフォルダーに画像が保存されるランダムなモンスターのスプライトを作成しようとしています。

上記のコードを実行すると、このエラーが発生します

メインバンドルから画像を参照すると、コードが機能します。アプリ バンドル内のフォルダーからランダムな画像を使用して、それを SKSpriteNode に渡すにはどうすればよいですか?

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

ios - SpriteKit、透過値の矩形を取得

SKSpriteNode私には新しいです。下の画像では、スプライト キットを使用して非透明部分の四角形を取得する方法を考えています。

ここに画像の説明を入力

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

ios - 2 つの SKSpriteNodes 間の衝突を検出する方法はありますが、それらを重複させることはできますか?

これを行う方法はないと思いますが、2 つの SKSpriteNode が互いに交差することを検出する方法はありますが、それでも重なり合って、実際には互いに跳ね返らないようにする方法はありますか?

物理ボディなしで 1 を作成し、それらの座標を確認するコードを記述できることはわかっていますが、SK メソッドでこれを検出できるスプライト キットに何かが欠けているのではないかと考えました。

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

ios - SKSpriteNode をサブクラス化するときの物理体の問題?

SKSpriteNode のサブクラス化中に問題が発生しました。サブクラスの実装は次のとおりです。

次に、メインのゲーム シーンでリスを次のように作成しています。

すべてがうまく作成されます。ただし、ゲームプレイ中は、タッチの開始時にリスの物理ボディを「一時停止」し、タッチの終了時に再度有効にします (tempSquirrelBody はシーンの SKPhysicsBody インスタンス変数です)。基本的に、ユーザーが画面に触れている間、リスがユーザーに向かって移動し、他のオブジェクトの上を移動しているという錯覚を与えようとしています。

残念ながら、これは機能していません。物理ボディが中断されず、物理ボディが nil に設定されているはずのときに、リスが他のオブジェクトと衝突します。SSSquirrel クラスからゲーム シーンにコードを移動すると、動作します。私は間違って何をしていますか?

ありがとう!