Sprite不会用手指/ SpriteKit / Swift 3移动

Posted

技术标签:

【中文标题】Sprite不会用手指/ SpriteKit / Swift 3移动【英文标题】:Sprite won't move with finger/ SpriteKit / Swift 3 【发布时间】:2016-12-05 07:50:17 【问题描述】:

*我搜索了大多数地方,但找不到我的问题的“基本解决方案”

您好,我正在尝试创建一个简单的 SKSpriteNode,它将随着我的手指在屏幕上的任意位置移动(x 和 y 坐标)。到目前为止,我所做的是下面的代码,我似乎无法弄清楚其他的事情,因为当游戏运行时我的 Sprite 甚至不会移动。我在以下位置也遇到错误:

simpleS = self.childNode(withName: "simpleS") as! SKSpriteNode

这行代码导致我的程序在我添加后无法运行。请并感谢您的帮助。

在这种情况下,Sprite "simpleS" 是我尝试在触摸开始时移动的 Sprite。

代码从这里开始:

    import SpriteKit
    import GameplayKit

    class GameScene: SKScene 

var simpleS = SKSpriteNode()

override func didMove(to view: SKView) 

    simpleS = self.childNode(withName: "simpleS") as! SKSpriteNode

    simpleS.physicsBody?.affectedByGravity = true




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

    for touch in touches 
        let location = touch.location(in: self)

        simpleS.run(SKAction.moveTo(x: location.x, duration: 0.0))
        simpleS.run(SKAction.moveTo(y: location.y, duration: 0.0))

    


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

    for touch in touches 
        let location = touch.location(in: self)

        simpleS.run(SKAction.moveTo(x: location.x, duration: 0.0))
        simpleS.run(SKAction.moveTo(y: location.y, duration: 0.0))

    
      
    

【问题讨论】:

这段代码有几个问题。尝试按照这样的指南来更快地使用 SpriteKit; raywenderlich.com/49721/…. 【参考方案1】:

这段代码

simpleS = self.childNode(withName: "simpleS") as! SKSpriteNode

将 GameScene.sks 中的精灵与 GameScene.swift 连接起来 因此,在第一步中,您必须确保在您的 sks 文件中设置了正确的名称(确切地说是“simpleS”)。

如果你做对了,请把错误发给我们。 我已经构建并运行了您的代码,一切正常。

另一点是,如果您希望精灵仅通过手指移动移动,则必须删除 touchesBegan 函数中的代码,因为 touchesBegan 会在您触摸的任何地方移动您的精灵。

【讨论】:

gyazo.com/a499ed44c710c13895ee0800ed8754f0 这是我得到的错误,太奇怪了。不知道我做错了什么,感谢您的帮助。 没关系,我搞定了!原来我将背景命名为“simpleS”而不是实际的节点...无论如何感谢您的帮助!

以上是关于Sprite不会用手指/ SpriteKit / Swift 3移动的主要内容,如果未能解决你的问题,请参考以下文章

检测 Sprite Kit 中的长触摸

使用 Sprite Kit 画线时播放声音

SpriteKit - 鼠标在 Sprite 拖动时捕捉到中心

iOS 7 之前的 Sprite Kit 可用性

FPS在SpriteKit中下降

阻止 Sprite 在 SpriteKit 中相互推动