Ios SKSpriteNode不会改变其位置

Ios SKSpriteNode不会改变其位置,ios,swift,sprite-kit,skspritenode,Ios,Swift,Sprite Kit,Skspritenode,我试图在用户结束触摸屏幕后更改SKSpriteNode的位置。x和y位置应该是随机的,但当然仍然在屏幕上 以下是我编写的函数: //Move object to a random position on the screen func randomPosition(object: SKSpriteNode){ object.position.x = CGFloat(arc4random_uniform(UInt32(UIScreen.main.bounds.width))) ob

我试图在用户结束触摸屏幕后更改SKSpriteNode的位置。x和y位置应该是随机的,但当然仍然在屏幕上

以下是我编写的函数:

//Move object to a random position on the screen
func randomPosition(object: SKSpriteNode){
    object.position.x = CGFloat(arc4random_uniform(UInt32(UIScreen.main.bounds.width)))
    object.position.y = CGFloat(arc4random_uniform(UInt32(UIScreen.main.bounds.height)))
}
但不幸的是,节点不能可靠地移动。大多数时候,它只是旋转一点点。(看起来很像一只虫子)

这里是我从上面调用函数的地方:

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    ...
    randomPosition(object: enemy)
    ...
}
override func touchesend(touch:Set,带有事件:UIEvent?){
...
随机位置(对象:敌人)
...
}
当我只调用一次randPosition函数时,例如在didMove函数中,那么它确实工作得很好


提前感谢您

我猜敌人是一个新的例子,不是你在现场看到的。所以从逻辑上讲,
敌人
确实改变了位置,只是不是想要的位置。仅供参考,您应该显示仍然允许您重现问题的所有代码。现在,如果你只使用你已有的代码创建了一个新项目,你就不会重现你的结果(这实际上会在你身上出错)你是否将相机设置为屏幕坐标?因为若并没有,SK不会使用UIKit的坐标系,所以试图在屏幕空间中指定位置是行不通的。在任何情况下,您仍然需要按对象宽度的1/2和对象高度的1/2插入屏幕,以确保不会溢出屏幕。