【发布时间】:2017-04-12 19:45:51
【问题描述】:
我可以按如下方式创建自定义 SKAction:
extension SKAction {
class func move(from: CGPoint, halfWayTo: CGPoint, duration: TimeInterval) -> SKAction {
let midPoint = CGPoint(x: (from.x + halfWayTo.x)/2, y: (from.y + halfWayTo.y)/2 )
return SKAction.move(to: midPoint, duration: duration)
}
}
然后我像这样使用它:
//Setup
let node = SKNode()
node.position = CGPoint(x: 50, y: 50)
let destination = CGPoint(x: 100, y: 100)
//Move from node's current position half way towards the destination
let action = SKAction.move(from: node.position, halfWayTo: destination, duration: 1)
node.run(action)
但要符合标准:
SKAction.move(to: destination, duration: 1)
我宁愿说:
let action = SKAction.move(halfWayTo: destination, duration: 1)
node.run(action)
但我不知道如何从自定义 SKAction 中引用“节点”,以便获取它的位置并计算中点?
【问题讨论】:
-
我一直在尝试做类似的事情,但我想不出任何办法。正如您所意识到的,当您调用
SKAction.move(halfwayTo:)时,SKAction无法访问相关的SKNode。您对SKNode的扩展是一个有趣的想法,但我想我会坚持使用对SKAction的扩展,并且只是通过起点,就像您在原始示例中所做的那样。似乎更好地在代码中明确我们正在创建一个SKAction。 -
我同意它作为 SKAction 的扩展更好。