我正在创建一个游戏,用户可以在其中移动一些水果。我希望用户只能移动水果,而不能移动场景中的任何其他SKSpriteNode,因此我编写了以下代码来实现它。但是,代码无法正常工作,因为我似乎无法拖动任何精灵,而是仅当我停止触摸屏幕并且它们不会移动太多时,它们才会改变位置。
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first
if let location = touch?.location(in: self){
let nodesTouched = nodes(at: location)
for node in (nodesTouched) {
if node is Fruit{
for t in touches {
let locationMoved = t.location(in: self)
node.position.x = locationMoved.x
node.position.y = locationMoved.y
}
}
}
}
}
有人知道这是怎么回事吗?
谢谢!
答案 0 :(得分:0)
我找到了解决方案,基本上是每次触摸该特定Fruit实例时,将PhysicsBody.affectedByGravity属性设置为false,然后在我停止触摸它时将其重新设置为true。这样就可以将所有水果拖到我想要的任何地方。