xcode 8 beta 4中的GKBehaviour让gkagent的位置变得疯狂

时间:2016-08-04 22:17:40

标签: ios xcode sprite-kit tvos gameplay-kit

所以我正在制作一款游戏,我希望为GKGoal行为添加一些GKAgent

因此经过数小时的战斗后,我这次下载的项目是来自Apple Agents Catalog,而在Xcode 7.3中,它可以正常运行。我将其重写为Swift并使用GKGoal(toWander:)创建基本GKAgent,这是我的代码:

 class AAPLAgentNode: SKNode, GKAgentDelegate {
    init(withScene scene:SKScene ,radius: Float, position:CGPoint) {
        super.init()

        self.position = position
        self.zPosition = 10
        scene.addChild(self)

        agent = GKAgent2D()
        agent.radius = radius
        agent.position = vector2(Float(position.x), Float(position.y))
        agent.delegate = self
        agent.maxSpeed = 100
        agent.maxAcceleration = 50

        let circleShape = SKShapeNode(circleOfRadius: CGFloat(radius))
        circleShape.lineWidth = 2.5
        circleShape.fillColor = SKColor.gray
        circleShape.zPosition = 1
        self.addChild(circleShape)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }


    func agentWillUpdate(_ agent: GKAgent) {

    }

    func agentDidUpdate(_ agent: GKAgent) {
        self.position = CGPoint(x: Double(self.agent.position.x), y: Double(self.agent.position.y))
        print("aaa == \(self.position)")
    }

    var agent: GKAgent2D!
}

当我添加到场景

     let wanderer = AAPLAgentNode(withScene: self, radius: 100, position: CGPoint(x: 0, y: 0))

    wanderer.agent.behavior = GKBehavior(goal: GKGoal(toWander: 10), weight: 100)

    agentSystem.addComponent(wanderer.agent)

没有行为位置是静态的但是当我添加它时,位置变得疯狂,并且在每次更新迭代中,值都是

  • position ==( - 10051366.0,251672512.0)
  • position ==(1368370.0,259904576.0)
  • position ==( - 131583.0,264841120.0)

它只是一个Xcode 8测试版错误,还是我做错了什么。我花了很多时间试图解决它。 感谢:)

2 个答案:

答案 0 :(得分:1)

尝试使用此代理,行为内容非常令人沮丧...当我在toSeekAgent方法中添加节点和代理时尝试didMove()时,我在Xcode 9.0中遇到此问题我的SKScene,但在touchesBegan()“初始化”之后,极端位置问题消失了。

答案 1 :(得分:0)

我知道这已经很老了,但是您第一次更新时的deltaTime很高吗?

我以系统时间作为第一次对座席行为的更新调用,导致在第一时间步出现了巨大的跳跃