問題タブ [gameplay-kit]

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

ios - GameplayKit の nextIntWithUpperBound() がプレイグラウンドで失敗する

以下のコードは、iOS プロジェクトではうまく機能しますが、iOS プレイグラウンドでは失敗します。「おそらくバグだ」以外の理由はありますか?注: 次のメッセージを表示するには、プレイグラウンド デバッグ エリアを開く必要があります。

繰り返しますが、同じコードは通常の iOS プロジェクトで問題なく機能します。Intとについて何かが混乱しているように見えUIntます。randomIndexInt

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

swift - GKAgent2D の位置と SpriteKit の位置の間でプログラムが混乱する

GameplayKit と Swift を使用しています。エージェントの移動コンポーネントで、agentWillUpdate: を実行していますが、位置が決定される行で、「型 '(CGPoint)' の引数リストで型 'Float2' の初期化子を呼び出すことができません」というエラーが表示されます。

ノードの位置は問題ありません (私はプリントでこれをテストしました)。「位置」を CMD クリックすると、GKAgent2D のプロパティではなく、SpriteKit の位置プロパティが表示されます。agent.property を使用してプロパティを参照しようとすると、デバッガーから「型 'GKAgent' の値にメンバー '位置がありません」と表示されます。

次の関数呼び出しで、元のエラーと同じエラーが逆に表示されます。

CGPoint(position) を CMD クリックすると、GKAgent2D が表示されます。2つの「立場」が逆転しているように見えます。これを修正する方法はありますか?

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

sprite-kit - GKAgents を使用してスプライトを左右に移動する

GKAgent画面を左から右に移動する方法を探しています。エージェントは に接続され、GKEntityさらに「leftWall」と「rightWall」という 2 つのエージェントを作成しました。各エージェントには、一意の名前を持つ一致するスプライト ノードがあります。SKPhysicsContact画面を移動するエージェントに新しいターゲット エージェントを渡すためにメインで使用しようとしましたGameScene(たとえば、leftNode と通信する場合は、rightNode の名前を渡します)。

移動するエージェントにたどり着くために、エンティティの配列を保持するクラスをその間に用意します。

}

移動中から、対応する壁(文字列変数)GKAgentのエージェントを検索し、これを「seek」に渡します。これは基本的に機能しますが、多数のエージェントを設定する場合、新しいものを渡すと、左または右の壁と接触したエージェントに影響するだけでなく、すべてのエージェントに影響します。その結果、2 つの壁に最も近いエージェントからの物理的な接触に応答して、すべてのエージェントが画面内で振動しています。これを解決する方法はありますか?エージェントに送信する前に、最初にターゲットをエンティティに渡す必要がありますか?targetWallEntityNameGKGoaltargetWallEntityName

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

swift - SCNAction シーケンスが断続的に機能しなくなるのはなぜですか?

SCNNodeに制約されたシーン内でを移動しようとしていGKGridGraphます。PacMan の線に沿って考えますが、3D で考えてください。

ControlComponentSCNNode の動きを処理する があります。ロジックは次のようになるはずです...

  1. プロパティを設定しqueuedDirectionます。
  2. isMovingフラグが falseの場合は、move() メソッドを呼び出します
  3. GKGridGraph を使用して次の動きを評価する

    direction3.1プロパティを使用してエンティティが GKGridGraphNode に移動できる場合、nextNode = nodeInDirection(direction)

    queuedDirection3.2プロパティを使用してエンティティが GKGridGraphNode に移動できる場合nextNode = nodeInDirection(queuedDirection)

    3.3 エンティティがどちらの方向にもノードに移動できない場合は、isMovingフラグを false に設定して戻ります。

  4. moveToアクションを作成する
  5. メソッドrunBlockを呼び出す を作成しますmove()
  6. moveToおよびrunBlockアクションをシーケンスとして SCNNode に適用します

以下の完全なクラスに貼り付けました。しかし、最初に私が抱えている問題を説明します。上記のロジックは機能しますが、断続的にしか機能しません。アニメーションがほとんどすぐに停止することもあれば、最大 1 分間実行されることもあります。しかし、ある時点で、何らかの理由で動作を停止します-setDirection()発火し、move()発火し、 SCNNode が指定された方向に1スペース移動すると、move()メソッドの呼び出しが停止します。

現在のアプローチが正しいと 100% 確信しているわけではないので、これを行うより慣用的な SceneKit/GameplayKit の方法があるかどうかを聞いてうれしいです。

setDirection()これが完全なクラスですが、重要な部分はメソッドとメソッドだと思いmove()ます。

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

swift - GKComponent 内に SKPhysicsContact を配置する

現在、SKPhysicsContact を使用して、GameScene 内からスプライトの動作の変更をトリガーしています。問題は、展開ごとに、ゲームシーンがどんどん長くなってしまうことです。連絡先の管理を簡単にするために、SKPhysics を埋め込んだ GKComponent を作成した人はいますか? これはどのように機能しますか?

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

swift2 - GKEntity が識別されない

接触検出のために DemoBots で使用されているアプローチを再利用しています。コードの動作と DemoBot の記述方法が異なるため、問題が発生しました。DemoBot では、コンポーネント RenderComponent に変数 ' node'があります。

私のコードではアニメーションを使用していないため、RenderComponent に相当するものはもう少し複雑です。変数 'node' は既に使用されており、physicsBody に関連付けられているため、新しい変数 ' entityNode'を作成しました

handleContact: メソッド内で、エンティティへの参照を取得するために 2 つの解決策を試しました。オプション1:

これに対して print() チェックを実行すると、これら 2 つのエンティティに対して nil 値が返されます。entityNodeエンティティを見つけるために「 」という名前のプロパティを探す必要があるため、これは十分に論理的です。オプション 2 に変更すると、次のようになります。

entityNodephysicsBody にメンバー「 .」がないというエラーが表示されます。contactBody に関連付けられたエンティティを検索するなど、他にも多くのことを試しましたが、後続のコードがオプションを探しているという別のエラーが発生します。「if」を取り除こうとしましたが、問題を次のcontactCallBack呼び出しに移すだけです。

これを解決してcontactCallBack通話を機能させる方法はありますか?