問題タブ [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 - サブクラスで GKStateMachine を使用してリークする
私の実際のコードを紹介します。次の 3 つの要素があります。
一部のゲームの状態を持つヘルパーのサブクラス:
そしてアメリカ。ここでは、そのうちの 1 つを紹介します。もう 1 つは同じ構造です。
問題は、GameSceneHelper のサブクラス内で gameState 変数を定義すると、リークが発生することです。しかし、サブクラスを使用せず、代わりに GameScene を SKScene の直接のサブクラスにすると、すべてが機能します。問題は、私のプロジェクトではヘルパーが必要なため、方程式から外すことができないことです。誰か提案はありますか?
ios - [文字列] を入力する Swift 3.0 オンライン チュートリアル エラー
私はプログラミング全般に不慣れです。
私はオンライン チュートリアルで学習することに決め、YouTube のチュートリアルに従って (ブートレグ ギャラガ) のような空間のゲームを作成しています。
私はすべてをチェックしましたが、何が間違っているのか、Xcode の更新があるのか わかりません。このチュートリアルを完了するには、どうすればこれを修正できますか?
コード:
エラー:
「タイプ '(String, String, String)' の値を予期される引数タイプ '[Any]' に変換できません
ios - SpriteKit と GamePlayKit を使用したマップ領域の制約と衝突
ユニットがマップ上を移動する SpriteKit と GamePlayKit を使用して 2D ゲームを構築しています。実装したいことの 1 つは、陸上ユニットがマップの特定の領域 (ドット 1) に入ったときに通知を受け取ることです。2 つ目は、軍艦が水上のみを移動するように制限することです。
そこで、私の最初のアイデアは、マップ上の土地全体を 1 つの SpriteNode (A と呼びましょう) にし、興味深い緑の領域を別の SpriteNode にすることでした。したがって、physicsBodies をそれらに追加するとdidBegin
、衝突があるかどうかをすばやく確認できます。しかし、これが独自の物理学を導入する GPK エンティティ システムでどのように機能するかはわかりません。誰でも経験がありますか?Appleのドキュメントで同様のことが言及されているのを見つけました: https://developer.apple.com/reference/gameplaykit/gkpolygonobstacle
スプライトがそれらの領域に入らないように物理ボディを持つノードを既に使用している場合は、それらのノードを再利用できます。
結局のところ、これは実行可能なオプションのようです。
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 の初期化が期待どおりに失敗します。
したがって、コンポーネントの更新がまだ呼び出されているか、システムからエンティティを削除できないため、コンポーネントをシステムから削除できないようです。
ios - (Apple) SKScene を使用した GameplayKit ステート マシンの実装
私は GameplayKit State Machine を読んだことがありますが、ドキュメント では、使用例としてゲーム UI について明示的に言及しています。コンセプトは完全に理解していますが、SpriteKit の使用中に実装する方法がわかりません。
3つの州が欲しいとしましょう。メニュー、ゲームプレイ、ゲーム オーバー - SKScene にコンテンツを表示するすべて。GameScene クラスは SKScene を拡張します。したがって、拡張できるクラスは 1 つだけなので、GameScene をステート マシンにすることはできません。
GameScene には、SKScene への参照を含むステート マシンの変数が必要ですか、それともより良い解決策がありますか? 以前はステート マシンのプロトコルを使用していたので簡単でしたが、GameplayKit の機能を試してみたいと思います。