cuốn sách gpt4 ai đã làm

swift - 程序混淆了 GKAgent2D 位置和 SpriteKit 位置

In lại Tác giả: Walker 123 更新时间:2023-11-28 12:58:59 25 4
mua khóa gpt4 Nike

我正在使用 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)
}

通过 CGPoint(位置)点击 CMD 将我带到 GKAgent2D。这两个“位置”似乎是相互颠倒的。任何想法如何纠正这个?

câu trả lời hay nhất

如果您不想每次都编写转换代码,您可以使用这些扩展,然后您可以保留问题中的代码。

extension CGPoint {
init(_ point: float2) {
x = CGFloat(point.x)
y = CGFloat(point.y)
}
}

extension float2 {
init(_ point: CGPoint) {
self.init(x: Float(point.x), y: Float(point.y))
}
}

关于swift - 程序混淆了 GKAgent2D 位置和 SpriteKit 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34333407/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress