Я использую GameplayKit и Swift. В компоненте перемещения моего агента я запускаю agentWillUpdate:, но получаю сообщение об ошибке «Невозможно вызвать инициализатор для типа Float2 со списком аргументов типа (CGPoint)» в строке, где определяется позиция.
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 не имеет позиции члена».
При следующем вызове функции я получаю ту же ошибку, что и моя исходная, в обратном порядке: «Невозможно вызвать инициализатор для типа« CGPoint »со списком аргументов типа« (vector_float2) »»
func agentDidUpdate(agent: GKAgent) {
guard let spriteComponent = entity?.componentForClass(SpriteComponent.self) else {
return
}
spriteComponent.node.position = CGPoint(position)
}
Щелчок CMD через CGPoint (позиция) приводит меня к GKAgent2D. Кажется, что две «позиции» перевернуты друг с другом. Любые идеи, как это исправить?