我知道移动一个物体并不困难,但我的不同之处在于,我尝试了各种方式,但没有一个工作过。
我想要实现的目标?
所以我直接去了touchesBegan
并写了以下内容:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
ball?.removeAllActions()
for touch in touches {
let moveBY = SKAction.moveTo(x: touch.location(in: view).x, duration: 1.0)
self.ball?.run(moveBY)
}
}
我尝试了四种不同的方法,我无法克服它,也供你参考,这是我的球的照片 信息:
答案 0 :(得分:3)
为了按照您想要的方向移动节点,您首先必须知道三件事
anchorPoint
anchorPoint
position
节点节点的anchorPoint
属性以标准化的方式将其值从(0,0)存储到(1,1)。 SPSpriteNode
节点的position
属性将其位置(x,y)坐标存储在ortogonal坐标系中,其中点(0,0)位于PARENT的锚点所在的位置强>
所以你的场景anchorPoint
是(0.5,0.5),这意味着如果你在坐标(0,0)处放置一个直接的孩子,孩子将被定位为{{1} }位于(0,0),它始终与其父anchorPoint
匹配。
当你使用那些重载touchesBegan,touchesMoved等...在anchorPoint
或SKScene
内作为一般,如果你想获得在坐标系中表示的触摸位置场景的直接孩子(sknode)位于,你应该做类似
SKNodes
希望它有用,你可能遇到的其他问题是你的球不是场景的直接孩子,你的坐标错了