問題タブ [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.
ios - GameplayKit の nextIntWithUpperBound() がプレイグラウンドで失敗する
以下のコードは、iOS プロジェクトではうまく機能しますが、iOS プレイグラウンドでは失敗します。「おそらくバグだ」以外の理由はありますか?注: 次のメッセージを表示するには、プレイグラウンド デバッグ エリアを開く必要があります。
繰り返しますが、同じコードは通常の iOS プロジェクトで問題なく機能します。Int
とについて何かが混乱しているように見えUInt
ます。randomIndex
Int
swift - GKAgent2D の位置と SpriteKit の位置の間でプログラムが混乱する
GameplayKit と Swift を使用しています。エージェントの移動コンポーネントで、agentWillUpdate: を実行していますが、位置が決定される行で、「型 '(CGPoint)' の引数リストで型 'Float2' の初期化子を呼び出すことができません」というエラーが表示されます。
ノードの位置は問題ありません (私はプリントでこれをテストしました)。「位置」を CMD クリックすると、GKAgent2D のプロパティではなく、SpriteKit の位置プロパティが表示されます。agent.property を使用してプロパティを参照しようとすると、デバッガーから「型 'GKAgent' の値にメンバー '位置がありません」と表示されます。
次の関数呼び出しで、元のエラーと同じエラーが逆に表示されます。
CGPoint(position) を CMD クリックすると、GKAgent2D が表示されます。2つの「立場」が逆転しているように見えます。これを修正する方法はありますか?
sprite-kit - GKAgents を使用してスプライトを左右に移動する
GKAgent
画面を左から右に移動する方法を探しています。エージェントは に接続され、GKEntity
さらに「leftWall」と「rightWall」という 2 つのエージェントを作成しました。各エージェントには、一意の名前を持つ一致するスプライト ノードがあります。SKPhysicsContact
画面を移動するエージェントに新しいターゲット エージェントを渡すためにメインで使用しようとしましたGameScene
(たとえば、leftNode と通信する場合は、rightNode の名前を渡します)。
移動するエージェントにたどり着くために、エンティティの配列を保持するクラスをその間に用意します。
}
移動中から、対応する壁(文字列変数)GKAgent
のエージェントを検索し、これを「seek」に渡します。これは基本的に機能しますが、多数のエージェントを設定する場合、新しいものを渡すと、左または右の壁と接触したエージェントに影響するだけでなく、すべてのエージェントに影響します。その結果、2 つの壁に最も近いエージェントからの物理的な接触に応答して、すべてのエージェントが画面内で振動しています。これを解決する方法はありますか?エージェントに送信する前に、最初にターゲットをエンティティに渡す必要がありますか?targetWallEntityName
GKGoal
targetWallEntityName
swift - SCNAction シーケンスが断続的に機能しなくなるのはなぜですか?
SCNNode
に制約されたシーン内でを移動しようとしていGKGridGraph
ます。PacMan の線に沿って考えますが、3D で考えてください。
ControlComponent
SCNNode の動きを処理する があります。ロジックは次のようになるはずです...
- プロパティを設定し
queuedDirection
ます。 isMoving
フラグが falseの場合は、move() メソッドを呼び出しますGKGridGraph を使用して次の動きを評価する
direction
3.1プロパティを使用してエンティティが GKGridGraphNode に移動できる場合、nextNode = nodeInDirection(direction)
queuedDirection
3.2プロパティを使用してエンティティが GKGridGraphNode に移動できる場合nextNode = nodeInDirection(queuedDirection)
3.3 エンティティがどちらの方向にもノードに移動できない場合は、
isMoving
フラグを false に設定して戻ります。moveTo
アクションを作成する- メソッド
runBlock
を呼び出す を作成しますmove()
moveTo
およびrunBlock
アクションをシーケンスとして SCNNode に適用します
以下の完全なクラスに貼り付けました。しかし、最初に私が抱えている問題を説明します。上記のロジックは機能しますが、断続的にしか機能しません。アニメーションがほとんどすぐに停止することもあれば、最大 1 分間実行されることもあります。しかし、ある時点で、何らかの理由で動作を停止します-setDirection()
発火し、move()
発火し、 SCNNode が指定された方向に1スペース移動すると、move()
メソッドの呼び出しが停止します。
現在のアプローチが正しいと 100% 確信しているわけではないので、これを行うより慣用的な SceneKit/GameplayKit の方法があるかどうかを聞いてうれしいです。
setDirection()
これが完全なクラスですが、重要な部分はメソッドとメソッドだと思いmove()
ます。
swift - GKComponent 内に SKPhysicsContact を配置する
現在、SKPhysicsContact を使用して、GameScene 内からスプライトの動作の変更をトリガーしています。問題は、展開ごとに、ゲームシーンがどんどん長くなってしまうことです。連絡先の管理を簡単にするために、SKPhysics を埋め込んだ GKComponent を作成した人はいますか? これはどのように機能しますか?
swift2 - GKEntity が識別されない
接触検出のために DemoBots で使用されているアプローチを再利用しています。コードの動作と DemoBot の記述方法が異なるため、問題が発生しました。DemoBot では、コンポーネント RenderComponent に変数 ' node
'があります。
私のコードではアニメーションを使用していないため、RenderComponent に相当するものはもう少し複雑です。変数 'node' は既に使用されており、physicsBody に関連付けられているため、新しい変数 ' entityNode
'を作成しました
handleContact: メソッド内で、エンティティへの参照を取得するために 2 つの解決策を試しました。オプション1:
これに対して print() チェックを実行すると、これら 2 つのエンティティに対して nil 値が返されます。entityNode
エンティティを見つけるために「 」という名前のプロパティを探す必要があるため、これは十分に論理的です。オプション 2 に変更すると、次のようになります。
entityNode
physicsBody にメンバー「 .」がないというエラーが表示されます。contactBody に関連付けられたエンティティを検索するなど、他にも多くのことを試しましたが、後続のコードがオプションを探しているという別のエラーが発生します。「if」を取り除こうとしましたが、問題を次のcontactCallBack
呼び出しに移すだけです。
これを解決してcontactCallBack
通話を機能させる方法はありますか?