0
私はSpriteKitとGameplayKitで遊んでいます。しかし、私がコードを実行するとき、私が振り回したいスプライトは何もしません。GKComponentSystemには更新サイクルでコンポーネントがありません
私はいくつかの値を印刷するlldbを使用し、これはプリントアウトです:
(lldb) po agentSystem.components
▿ 1 elements
- [0] : <GKAgent2D: 0x7fc1b8e55ff0>
(lldb) po agentSystem.components
0 elements
最初はaddComponentWithEntity:
が呼び出された直後に印刷されます。 2番目はupdate:
メソッドで表示されます。
もちろん、これはスプライトがさまよっていない理由でなければなりませんが、何が原因で問題になる可能性がありますか?
Appleのsample code for Agentsのコードを調べて使用しましたが、それでも問題を解決していないようです。私は同様の問題があった
import SpriteKit
import GameplayKit
class GameScene: SKScene
{
// MARK: - Properties
let agentSystem = GKComponentSystem(componentClass: GKAgent2D.self)
var lastUpdateTimeInterval: CFTimeInterval = 0.0
// MARK: - Scene Lifecycle
override func didMoveToView(view: SKView)
{
// Wave enemy
let agent = GKAgent2D()
agent.behavior = GKBehavior(goal: GKGoal(toWander: 10), weight: 100)
let waveEnemy = WaveEnemy()
waveEnemy.addComponent(agent)
agentSystem.addComponentWithEntity(waveEnemy)
let waveSprite = waveEnemy.componentForClass(VisualComponent)!.spriteNode
waveSprite.position = CGPoint(x: frame.size.width * 0.5, y: frame.size.height * 0.5)
addChild(waveSprite)
}
override func update(currentTime: CFTimeInterval)
{
if lastUpdateTimeInterval == 0
{
lastUpdateTimeInterval = currentTime
}
let deltaTime: CFTimeInterval = currentTime - lastUpdateTimeInterval
lastUpdateTimeInterval = currentTime
// Update component system
agentSystem.updateWithDeltaTime(deltaTime)
}
}
私が正しく覚えている場合、これは私のための修正です - 質問を更新するのを忘れてしまった!返信をありがとう:) –
それは素晴らしいです、ありがとう! PS。弱い/強い参照をデバッグする方法はありますか? –
ああ私の良さ私は何時間も探してきました!これは私のゲームを完全に修正しました!どうもありがとうございました。 var enemies = [GKEntity]()行を追加して、新しいエンティティを追加して、強い参照を作成することは、私が紛失した唯一のものでした。ありがとうございました! – retrovius