問題タブ [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.
swift - カスタム トラバーサル コストを持つ GKGridGraphNode
私はこのチュートリアルに従っていました
http://blog.lukasjoswiak.com/gameplaykit-for-beginners-part-1/
最後にたどり着いたとき、塔を完全に通行不能にするのではなく、コストを高くしたかったのです。
そこで、GKGridGraphNode をサブクラス化し、コスト変数を追加し、costToNode 関数をオーバーライドして、コスト変数を方程式に挿入しようとしました。
私はそれを機能させることができないようです。これに関するドキュメントは、サブクラス化のメモで言及する以外に、ノード コストを持つことについて実際には説明していません。私は誰かがこれを行うことができたのだろうかと思っていましたか?
私はおそらく間違っていると思いますが、Swift ヘッダーを読んでも実際には何の手がかりも得られません。
助けてくれてありがとう
更新:重複としてクローズ
iso - GameplayKit のエンティティ/コンポーネントの概念
iOS 9 の GameplayKit のエンティティ/コンポーネントの概念を使用してゲームを設計しています。ShootComponent では、弾丸/ミサイルをエンティティとして定義する必要がありますか?
はいの理由:
ロジックを親から分離します (例: playerTank や energyTank)。
そうでない場合、TankEntity はその弾丸が他のエンティティまたはそれ自身と衝突するかどうかを区別する必要があります。
いいえの理由:
私の戦車や敵の砲塔によって発射されるのは、論理世界の実際のエンティティではありません。
弾丸は常に発射されて消えるため、ゲームでは時々追加/削除する必要があります。
コメントをお寄せください。
sprite-kit - GKGraph GKGraphNode GKGridGraphNode、それらの関係は何ですか?
私はドキュメントを読みましたが、まだそれらについて混乱しています.誰かが私に明確に説明することができますか?例えば、画像比較? ありがとう。
scenekit - GameplayKit のパスファインディング機能を SceneKit と組み合わせることはできますか?
ドキュメントの状態
GameplayKit は、SceneKit フレームワークで構築された 3D ゲームにも適しています
ただし、3d 空間に存在するSCNNodesで GKGraph などの SceneKit のパスファインディング機能を使用することについては言及されていないようです。
GameplayKit のパスファインディング機能は SceneKit ゲームには適していませんか? それとも、この 2 つを組み合わせる方法を説明する追加のドキュメントがどこかにありますか?
swift - SpriteKit 配列エラー SKNode.obstaclesFromNodes
SpriteKit ゲームのノードから障害物の配列を作成しようとしています。エラーを解決するために新しいプロジェクトを作成しましたが、それでもエラーが発生することがわかりました。
これは、新しいプロジェクトのコードです。
私はチェックしnodes
ましたが、ゼロではありません。が含まれていますspriteNode
。
let obstacles
次のエラーで行がクラッシュします。
キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '*** -[__NSPlaceholderArray initWithObjects:count:]: オブジェクト [0] から nil オブジェクトを挿入しようとしています'
私は周りを検索しましたが、問題について何も見つけることができませんでした。
問題が何であるかを知っている人はいますか?
swift - パスをブロックしてブロック解除した後、パスファインディングが機能しなくなりました
ユーザーが配置できる障害物を含むマップがあります。そして、マップの右から左に移動するスプライト。
ユーザーが障害物を配置すると、それらがゲームのグラフ (GKObstacleGraph) に追加され、始点から終点までのパスが利用可能かどうかを毎回確認します。そうでない場合は、ユーザーがパスを完全にブロックしたことを意味するため、配置された障害物を削除します。
それは再び道を開くはずですが、そうではありません。まるで障害物がまだそこにあるかのようです。
グラフ ノード内のすべての障害物をループして、障害物がどこにあるかを視覚的に示すデバッグ機能があります。障害物を追加するたびに実行されます。そして、パスをブロックする障害物を配置した後 (すぐに削除されます)、そこに障害物がないことが示されます。パスは明確です。
このコードは、pathClear が false を返し、else のコードが実行されるまで完全に機能します。障害物がグラフから削除されても (そして drawAllObstacleOutlines() 関数がそれを確認します)、pathClear はその後常に false を返します。
私が使用しない限り:
removeObstacles([]) 行を上記の行に置き換えると。再び障害物を配置できます。(パスをブロックしたものを除いて、削除されたすべての障害物を追加しても機能します。)
関数 updatePathForSprite は、基本的に以下のものを呼び出します。
ここで何が起こっているか知っている人はいますか?
編集:何か変なものを見つけたかもしれません。
drawAllObstacleOutlines() 行の上に次の行を追加すると:
障害物を追加すると増加します...私の場合、ノードは404で障害物は101ですが、パスをブロックする障害物を配置すると、出力は次のようになります:障害物101、ノード0
何らかの理由で、障害を 1 つだけ削除したにもかかわらず、グラフ内の他のすべてのノードが削除されています。
swift - ループを続行する前に、プロパティが true になるまで待機します
私が感じていることをやろうとするのは簡単なはずですが、これまで試したことはありません。敵のプロパティが true に設定されるまで、このループが継続しないようにしています。
私の敵ノードは、歩行状態中にプレイヤーへの経路を見つけ出します。パスが計算されるまで、次の敵に反復したくありません。私の敵ノードには、walk ステート中に true に設定した pathComplete ノードがあります。
これはタッチで実行されます。
swift - NSCoding および GameplayKit クラス
私のゲームには、NSCoding に準拠していない GameplayKit の GKGridGraph および GKGridGraphNode オブジェクトも使用する NSCoding 準拠の Combat クラスがあります。これらのオブジェクトをシリアル化/非シリアル化する方法はありますか?
objective-c - GKGridGraph の再署名時の EXC_BAD_ACCESS
次のようなグラフがあります。
幅と高さを割り当てます。
その後、新しい幅と高さで self.graph を再署名する必要があるため、上記と同じことを行います。そうすることで、EXC_BAD_ACCESS を取得します。
新しいグラフを作成してそれを self.graph に割り当ててみましたが、それでも同じです。
sprite-kit - GameplayKit で SKNodes を直立に保つ
動物のキャラクターを使った SpriteKit ゲームに取り組んでいます。動物は、GameplayKit のエージェントを使用して画面を左右に移動します。彼らは、画面の片側から反対側に移動する目に見えないエージェントに従います。これは、右から左に移動するとスプライトが上下逆に移動することを除いて、正常に機能します (左から右に移動しても問題ありません)。ミラー イメージを取得するために xScale を変更しようとしましたが、これを変更するために作成した SKAction をエージェントがオーバーライドしているようです (文字が画面上で一瞬びくびくします)。スプライト文字を直立させる方法を知っている人はいますか? 私のコードは func didBeginContact でトリガーされます。
これを修正する方法はありますか?
更新:コードは元の質問に示されています。
移動ノードは、SKNode (クラス: AnimalNode) の子に次の関数で用意されています。
RightWall は GameScene に設定された SKShapeNode です。ifステートメントが機能しているかどうかを確認するためにprintステートメントを追加したため、連絡先は正常に機能します。func turnLeft の呼び出しにも問題はなく、ノードに何も変化がありません。たぶん、これはキャラクターを反転させる最良の方法ではありません。私は他のアプローチに対してオープンです。turnLeft 関数は、キャラクターが右から左に移動するときに、キャラクターの向きの変化がよりシームレスに見えるように設定されています (そのため、スプライトの xScale を段階的に変更して、より「アニメーション化された」感じを与えます)。