Sprite-Kit:节点不会向左移动

Posted

技术标签:

【中文标题】Sprite-Kit:节点不会向左移动【英文标题】:Sprite-Kit: Node won't move left 【发布时间】:2017-12-21 09:54:45 【问题描述】:

我有一个地形平坦的球,但是我试图根据用户的touch 位置移动球,所以当用户点击屏幕上的任何位置时,我将我的球移动到触摸的X位置

我的代码:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 

   for touch in touches 

            if (ball?.hasActions())! 
                ball?.removeAllActions()
            
            let moveBY = SKAction.moveBy(x: touch.location(in: view).x, y: 70, duration: 1)
            self.ball?.run(moveBY)
    

但是,当用户点击屏幕时,小球会随之移动,但是当第二次点击时,小球不会按照触摸的X移动

【问题讨论】:

【参考方案1】:

当你应该使用moveTo时,你正在使用moveBy。

【讨论】:

【参考方案2】:

你应该试试这个:

 func touchDown(atPoint pos : CGPoint) 

    if ball.hasActions() 
        ball.removeAllActions()
    

    let moveBY = SKAction.moveBy(x: pos.x, y: 70, duration: 1)
    self.ball.run(moveBY)

我改变了功能

【讨论】:

请在您的回答中添加一些解释。 如果点击屏幕,就会调用 touchDown 函数。所以代码测试是否已经有一个动作,并停止这个当前正在运行的动作。然后我只是添加另一个动作,一直运行到它完成或退出。

以上是关于Sprite-Kit:节点不会向左移动的主要内容,如果未能解决你的问题,请参考以下文章

Sprite-Kit:移动SKSpriteNode

从父级(Sprite Kit)目标 C 中移除节点

如何将 SpriteKit 节点移动为汽车驾驶体验?

移动节点后,SKSpriteNode的X,Y坐标不会更改

Xcode 如何自动从其父节点中删除 skspritenode

删除根节点后重新平衡 2-3 树的正确方法