問題タブ [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 投票する
1 に答える
228 参照

ios - GameplayKit パスファインディングはどのアルゴリズムを使用しますか?

GameplayKit が経路探索に使用するアルゴリズムの種類についての参照を見つけた人はいますか? Apple のドキュメントを確認しましたが、何も見つかりませんでした。

最終的には、GameplayKit なしで実装された A* とのパフォーマンスに興味があります。Apple は素晴らしい仕事をしたと確信していますが、使用しない機能のためにパフォーマンスのオーバーヘッドを払いたくありません。

また、これらのタイプの力学について学ぶのが好きなので、ただ興味があります.

ありがとう、E

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

arrays - Swift 配列の AnyType エラー

cardDeck と呼ばれる配列内の Card オブジェクトで構成される、Swift でカード デッキを作成してシャッフルしようとしています。それから私はそれをシャッフルしたい。関連コード:

「[anyobject] 型の値を logic.card に割り当てられません」(「logic」は全体的なクラス名で、Card はその中の別のクラスです)

誰が何が悪いのか知っていますか?カードを含むと宣言したので、配列は AnyObject 型の配列ではないと思いますよね?

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

sprite-kit - SpriteKit エラーでステート マシンにアニメーションを追加

こんにちは、このアニメーションをゲームの状態に追加しようとしていますが、このエラーが発生しています

override func didEnterWithPreviousState(previousState: GKState?) {

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

ios - 手続き型マップの生成 - SpriteKit と GameplayKit

新しい を使用してノイズを生成する次のコードがありGameplayKitますGKNoise。でそれをどのように使用できるかわかりませんSKTileMapNode。誰もこれを試しましたか?現時点では、ノイズは各タイルに適用されますが、全体には適用されませんTileMap。生成されたノイズをマップ全体に使用する方法はありますか?

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

ios - シーンが一時停止しているときに GameplayKit が一時停止しない

目的地に向かって移動する SKNode 敵の動きを管理する GKAgent2D があります。

エージェントが移動している SKScene を一時停止すると、敵ノードはそのような動きを示さずに移動し続けているように見えます。目に見えるすべての動きが停止します (別名、敵の動きが停止します)。5 秒待ってからシーンの一時停止を解除すると、まるで敵の動きが止まらなかったかのように、シーンを一時停止していなかったらあったはずの場所に移動し、その時点から通常どおり動き続けます。

Apple がユーザー向けに作成した DemoBots と呼ばれるサンプル デモ ゲームを調べたところ、update:(NSTimeInterval *)currentTimeメソッドを単にリターンで終了するだけで、私が使用しているものと同様の「修正」が実装されています。これが私のコードが現在どのように見えるかです:

GKGoalしかし、一時停止が発生したときに現在有効な目標が確実に停止されるようにするために、彼らが他に何をしているのかを深く掘り下げることはできません。agentDidUpdate メソッドもログに記録しましたが、シーンを一時停止すると起動が停止するため、どのように動き続けているのかよくわかりません。

誰かが答えを知っているなら、私に知らせてください。ありがとうございました!

更新:移動するように設定された目標を持つ個々のノードを一時停止しようとしました:

しかし、これGKGoalsはシーンを一時停止せずに継続することを止めませんでした..

更新 2 : エージェントのコールドを停止する唯一の解決策は、文字通りエージェント システムの目的を削除することです。

シーンからすべてを完全に削除することなく、ゴールを停止するよりエレガントで適切な方法があることを願っているため、これは非常に悲しい解決策です。ただし、他の問題はこれでもあります。一時停止を解除するときに目標をリセットすると、一時停止が発生しなかった場合の位置にジャンプするという同じ問題が発生します。

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

ios - GameplayKit の障害

これが私の質問です:

  • エージェントが/を使用してこれらの障害を適切に回避SKSpriteNodeできるように、配列を配列に変換するにはどうすればよいですか?GKObstaclesgoalToAvoidObstacles:(nonnull NSArray<GKObstacle *> *) maxPredictionTime:(NSTimeInterval)

GKObstacle私が配列を作成している方法ではGKGoal、目標にどんな重みを与えても、これらを障害物として正しく識別できないようです。

現在、 chapterSceneSKNodeに追加されたいくつかの があります。これらのノードのそれぞれは、obstmentsArray という名前で保存している配列に追加されます。非常にうまく機能する次の方法でテストを設定しました。SKScene

作業障害

SKNodeこれは問題なく機能しますが、私が抱えている問題は、障害物として持っているボディ配列を識別するための動作を取得できないことです。GKCircleObstacleこれらの手動で作成されたアイテムを取得して、エージェントが回避する有効な障害物として登録することしかできません。これが問題である理由は、実際には単純な円ではなく、複雑で単純な多角形構造の多くの障害物に依存しているためです。それにもかかわらず、私は次のことを試みていましたが、私のエージェントはこのような障害を回避していないようでしたSKNode:

機能していない障害物

残念ながら、重みをどれだけ高く設定しても、エージェントは障害物を回避することにまったく反応しないため、これはうまくいかないようです。これは、私が渡している配列のログです:

それぞれが明確かつ適切に初期化され、シーンに追加されています。これらの要素のそれぞれは、実際にはSpriteKit didBeginContact:(SKPhysicsContact *)contactメソッドに応答するため、ノードが持つべき境界を適切に処理しているように見えます。

誰かが私が間違っていること、またはこれらの「障害ノード」のそれぞれを に変えるより良い方法を知っていれば、GKObstacle私は非常に感謝しています。前もって感謝します!

更新:これは、私がテストしている物理ボディを持つノードです:

本体は次のようになりskView.showsPhysics = YES;ます。

ここに画像の説明を入力

だから私は物理体が私が必要としているものであることを知っています。ただし、このボディからを作成しようとするとGKObstacle、avoidObstacles ゴールに割り当てられているときに障害物として登録されないようです。

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

ios - GameplayKit GKPolygonObstacle が GKGoal で機能しない

ここに投稿した質問と同様に、これは一部の要素では機能しますが、他の要素では機能しないため、問題が予想よりも簡単であることに気付きGameplayKitました..

私は、エージェントが使用できるSKNodeとして定義しようとしている障害物を持っています。GKPolygonObstacleGKAgent2DSKScene

Apple の AgentsCatalogを調べて、メソッドGKObstacleでエージェントをどのように使用するかを確認しました。GameplayKit

私自身のプロジェクトで次のコードを使用してGKCircleObstacleオブジェクトを作成すると、エージェントが非常にうまくナビゲートし、与えた重み (重要度) に応じてこれらの円形の障害物を非常にうまく回避することがわかりました。

私が使用しているコードは次のとおりです。

これらの障害を作成および追加する次のメソッドを使用します: (これは、AgentsCatalog の Apple のソース コードから直接取得されます)。

これは、敵がシーン内の特定の変化する位置に移動しようとするときにこれらの円を回避するため、うまく機能します。

問題

オブジェクトの代わりにオブジェクトを使用してこのGKGoal動作を再現しようとすると、敵のエージェントはポリゴンの障害物を、動作の目標を回避するための障害物として識別できないようです。これらの障害を追加しようとしている方法は次のとおりです。GKPolygonObstacleGKCircleObstacle

これについて最もイライラするのは、パスファインディングにもこのアプローチを使用したため、配列がオブジェクトNSArrayGKPolygonObstacleオブジェクトを正しく作成していることを知っていることです (苦労して実装することを決定する前にGameplayKit、目標を探し、回避し、さまよいます)。これが私がこのinnerMapArrayをどのように使用していたかです:

このメソッドは、特定の場所に到達しようとするときに敵に回避するように指示している障害物を回避するために、最も効率的なパスに含める必要があるポイントを非常にうまく返します。

  • では、本当の問題は次のようになります: オブジェクトを受け入れるのに、オブジェクトGKGoalを受け入れないのはなぜですか?GKCircleObstacleGKPolygonObstacle

誰かがこれらのSKNodeオブジェクトを に登録する許容可能な障害物に変換する方法を理解するのを手伝ってくれるなら、GKGoal私は非常に感謝しています. ありがとうございました。