問題タブ [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 - GKGraph は、GKGraphNode2D サブクラス化されたノードでパスを誤って計算します
iOS 9.2 SDK で部分的に解決されたこの質問で、この問題の調査を開始しました。
しかし、さらに調査したところ、このフレームワークがまだ期待どおりに機能していないことがわかりました。
要約すると、aGKGraph
はノード (およびそのサブクラス) で構築できGKGraphNode
、その間で経路探索コストと経路を計算できます。AGKGraphNode2D
は単に であり、GKGraphNode
その座標を 2 次元グリッドにカプセル化します。GKGraphNode
サブクラス化でき、メソッドcostToNode(_:)
とメソッドをestimatedCostToNode(_:)
オーバーライドして、ノード間のコストを提供できます。これらのカスタム ノードがグラフに追加されると、グラフはこれらのメソッドを使用して、接続されたノード間の最小コスト パスを決定する必要があります。
と呼ぶノードを作成していますGeometricNode
。ここで、ノード間のコストは、2 つのノード間の (2 次元座標空間での) 単純な距離です。ノードは、2D 空間内のすべての隣接ノード (対角隣接ノードを含む) に接続されます。つまり、特定のノードの上、下、左、および右に隣接するノードは 離れています1
が、斜めに隣接するノードはsqrt(2) ~ 1.414
離れています。これらのコストは、オーバーライドされたメソッドcostToNode(_:)
とで計算されestimatedCostToNode(_:)
ます。
残念ながら、これらの接続が適切に設定され、コストが適切に計算されたとしても、GKGraph
を呼び出したときに常に正しいパスが計算されるとは限りませんfindPathFromNode(_:toNode:)
。
コード (サンプルプロジェクト)
そして失敗したテスト:
swift - クラスをSwiftの辞書に値として保存する構文は何ですか?
私がこれをしたいとしましょう:
じゃあ後で:
動作しません。
を入れるとfoobar.Type
、それも機能しません。
foobar.class
asを入れfoobar.Type
ても動作しません。
これが必要な理由は、システム API にクラスを引数として取るメソッドがあるためです。
(GKStateMachine 内)
文字列を取得してそれをクラスに変換できることは受け入れられると思います。
swift - 物理ボディ ビットマスク システムのこの Swift SpriteKit サンプル コードを解釈する方法
Apple の SpriteKit と GameplayKit のサンプル コードを詳しく調べていたところ、Swift で記述された「DemoBots」というプロジェクトが見つかりました。そのプロジェクトで使用されている非常に興味深い概念がいくつかあり、それらを自分のプロジェクトに適用したいと考えていました。
私はすでに、衝突処理をハンドラー クラスにカプセル化する作業を行っていました。これは、そのサンプル コードで衝突が処理される方法と非常によく似ています。
このプロジェクトでは、 という構造体の次のコードを見つけましたRPColliderType
。
この構造体は、次のように.collisionBitmask
//プロパティを設定するたびに使用されます: (コンポーネントとエンティティの設計ガイドを使用してこれを実装しました).contactBitmask
.categoryBitmask
SKPhysicsBody
ここまでは順調ですね。Objective-C から来た私の問題は、RPColliderType Struct からの次のコード行が何をするのかを完全に理解していないことです。
それは、計算されたプロパティを呼び出すたびに(それはswiftで呼び出されますよね?)プロパティを呼び出すたびに-に割り当てるときにこれを行います-SKPhysicsBody
これをそれらの静的クラス辞書に追加します。mask
しかし、' ' / ' reduce
' / ' union
' コマンドの解釈に問題があります。
それは本当に何をしますか?
ios - Gameplaykit で、GKAgent2D の動作に遅延 GKGoal 時間を追加するにはどうすればよいですか?
コンポーネントを持つGKEntity
がありGKAgent2D
ます。その動作はGKGoal
、toWander:
およびtoStayOnPath:maxPredictionTime:
です。実体はシーン内を絶えずさまよいます。しかし、私はそれがしばらくさまようのを止めたいと思います. たとえば、エンティティがさまよっている羊の場合、定期的に食べるのをやめ、しばらくしてから再びさまよってほしいと思います。
アップデート:
エンティティ内:
MoveIdleComponent
WanderBehavoir:
これどうやってするの?
前もって感謝します
ios - Gameplaykit GKState、2 つのパラメーターを持つ迅速な機能
それはあなたにとって簡単な質問だと思います。
1 つの GKState で 2 つのパラメーターを持つ func を作成するにはどうすればよいですか?
アップデート
アップル使用
func willExitWithNextState(_ nextState: GKState)
私が使用する場合は正常にsomefunc(state:GKState)
動作します
whileは機能しsomefunc(state:GKState, string:String)
ません、なぜですか???
その他の例
私はこれを試しました:
ソリューションありがとう @ 0x141E
返信ありがとう
ios - GameplayKit で GKPath を表示する方法
GKPath を表示するトリックはありますか?
たとえば、私のパス:
このパスを表示する簡単な機能を探しています。ありがとう
objective-c - GKGridGraph 検索パスが機能しない
私はターン ベースのゲームを作ろうとしています。各敵はプレイヤー ノードへのパスを見つける必要があります。私はgameplaykitのパスファインディングを使用しており、敵がターンを行う必要があるたびに、そのGKGridGraphから他の敵を必ず削除し(敵が互いに歩かないようにするため)、後で同じノードを追加します。
removeNodes と addNodes の行をコメントアウトすると、すべて正常に動作します。
編集:同じオブジェクトを再署名するのではなく、生成された GKGridGraph を返すことができる新しいクラス オブジェクトを毎回作成することをお勧めしますか?
ios - GKStateMachine で再度入力できるように以前の状態を保存するにはどうすればよいですか?
ゲーム内のタイルの状態を追跡するために GKStateMachine を使用しています。
アイテムを配置すると、アイテムで覆われているタイルが「計画された」状態になります。タイルを保存して、後で元の状態に戻すにはどうすればよいですか?
これが、私の質問に関連していると思われるコードの部分です。特定のリクエストについて詳しく教えていただければ幸いです。
そしてステートマシン:
要点: https://gist.github.com/Relequestual/dac6d51c923e5ce4224e
previousState を previousState に設定すると、その変数を使用して状態に入ることができなくなります...
コンパイル時エラー: