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移动的主要内容,如果未能解决你的问题,请参考以下文章