我正在使用 GameplayKit 和 Swift。在我的代理的移动组件中,我正在运行 agentWillUpdate:但在确定位置的行上出现错误“无法使用类型为 '(CGPoint)' 的参数列表调用类型为 'Float2' 的初始化程序”。
MoveComponent: GKAgent2D, GKAgentDelegate {
init(...)
func agentWillUpdate(agent: GKAgent) {
guard let spriteComponent = entity?.componentForClass(SpriteComponent.self) else {
return
}
position = float2(spriteComponent.node.position)
}
节点位置没问题(我已经用打印测试过)。当我通过 CMD 单击“位置”时,我被带到 SpriteKit 的位置属性,而不是 GKAgent2D 的属性。当我尝试使用 agent.property 引用属性时,调试器告诉我“'GKAgent' 类型的值没有成员'位置'。”
在下一个函数调用中,我得到与原始错误相同的错误,“无法使用类型为 '(vector_float2)' 的参数列表调用类型为 'CGPoint' 的初始化程序”
func agentDidUpdate(agent: GKAgent) {
guard let spriteComponent = entity?.componentForClass(SpriteComponent.self) else {
return
}
spriteComponent.node.position = CGPoint(position)
}
CMD 单击 CGPoint(position) 将我带到 GKAgent2D。似乎这两个“位置”是相互颠倒的。任何想法如何纠正这个问题?