問題タブ [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 に答える
151 参照

ios - サブクラスで GKStateMachine を使用してリークする

私の実際のコードを紹介します。次の 3 つの要素があります。

一部のゲームの状態を持つヘルパーのサブクラス:

そしてアメリカ。ここでは、そのうちの 1 つを紹介します。もう 1 つは同じ構造です。

問題は、GameSceneHelper のサブクラス内で gameState 変数を定義すると、リークが発生することです。しかし、サブクラスを使用せず、代わりに GameScene を SKScene の直接のサブクラスにすると、すべてが機能します。問題は、私のプロジェクトではヘルパーが必要なため、方程式から外すことができないことです。誰か提案はありますか?

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

ios - [文字列] を入力する Swift 3.0 オンライン チュートリアル エラー

私はプログラミング全般に不慣れです。

私はオンライン チュートリアルで学習することに決め、YouTube のチュートリアルに従って (ブートレグ ギャラガ) のような空間のゲームを作成しています。

私はすべてをチェックしましたが、何が間違っているのか、Xcode の更新があるのか​​ わかりません。このチュートリアルを完了するには、どうすればこれを修正できますか?

コード:

エラー:

「タイプ '(String, String, String)' の値を予期される引数タイプ '[Any]' に変換できません

0 投票する
0 に答える
92 参照

ios - SpriteKit と GamePlayKit を使用したマップ領域の制約と衝突

ユニットがマップ上を移動する SpriteKit と GamePlayKit を使用して 2D ゲームを構築しています。実装したいことの 1 つは、陸上ユニットがマップの特定の領域 (ドット 1) に入ったときに通知を受け取ることです。2 つ目は、軍艦が水上のみを移動するように制限することです。

ここに画像の説明を入力

そこで、私の最初のアイデアは、マップ上の土地全体を 1 つの SpriteNode (A と呼びましょう) にし、興味深い緑の領域を別の SpriteNode にすることでした。したがって、physicsBodies をそれらに追加するとdidBegin、衝突があるかどうかをすばやく確認できます。しかし、これが独自の物理学を導入する GPK エンティティ システムでどのように機能するかはわかりません。誰でも経験がありますか?Appleのドキュメントで同様のことが言及されているのを見つけました: https://developer.apple.com/reference/gameplaykit/gkpolygonobstacle

スプライトがそれらの領域に入らないように物理ボディを持つノードを既に使用している場合は、それらのノードを再利用できます。

結局のところ、これは実行可能なオプションのようです。

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

sprite-kit - エンティティ GKComponent をシーンから削除する

2D ゲームに GamePlay kits Entity - Component system を使用しています。各エンティティには、spriteComponent、physicComponent などの GKComponents のサービスと、Entities spriteComponent を取得して画面上で移動する GKComponent (ChaseScrollMovement.swift) があります。

Enemy Enity への ChaseScrollMovment コンポーネントの追加

問題は、GameScence から EnemyEnity を削除するときです (WeaponEnity と接触したとき):

....EnemeyEnitiy が GameScene から削除され、GameScene update メソッドが Component update メソッドを呼び出します....

GameScene のコンポーネント

.....そのため、シーンから削除され、ここで例外がスローされるため、ChaseScroll コンポーネントは EnemyEntity の spriteCompnment を見つけることができません....

私は Enity-Compnent システムを初めて使用するので、単一の EnemyEntity (シーンには多数あります) がシーンから削除され、GameScene ライフサイクル中にコンポーネントが正常に更新されるようにするときに、例外を防ぐための最善の方法は何か疑問に思っています。 .

前もって感謝します

更新: システムからコンポーネントを削除して、コンポーネントの upDate メソッドがゲーム シーンの更新で呼び出されないようにしました。

//ゲームシーンで

しかし、削除すべきコンポーネントの更新がまだ呼び出されています。この更新では、コンポーネントをエンティティから削除した (そしてシステムから削除しようとした!) ため、エンティティ spriteComponent の初期化が期待どおりに失敗します。

したがって、コンポーネントの更新がまだ呼び出されているか、システムからエンティティを削除できないため、コンポーネントをシステムから削除できないようです。

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

ios - (Apple) SKScene を使用した GameplayKit ステート マシンの実装

私は GameplayKit State Machine を読んだことがありますが、ドキュメント では、使用例としてゲーム UI について明示的に言及しています。コンセプトは完全に理解していますが、SpriteKit の使用中に実装する方法がわかりません。

3つの州が欲しいとしましょう。メニュー、ゲームプレイ、ゲーム オーバー - SKScene にコンテンツを表示するすべて。GameScene クラスは SKScene を拡張します。したがって、拡張できるクラスは 1 つだけなので、GameScene をステート マシンにすることはできません。

GameScene には、SKScene への参照を含むステート マシンの変数が必要ですか、それともより良い解決策がありますか? 以前はステート マシンのプロトコルを使用していたので簡単でしたが、GameplayKit の機能を試してみたいと思います。