1
我希望能夠用手指移動精靈。我首先有一個可變的手指是否在子畫面或不:如何用手指移動精靈?
var isFingerOnGlow = false
然後我有touchesBegan
函數其中I改變上述變量的值如果用戶觸摸精靈:
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
var touch = touches.anyObject() as UITouch!
var touchLocation = touch.locationInNode(self)
if let body = physicsWorld.bodyAtPoint(touchLocation) {
if body.node!.name == GlowCategoryName {
println("Began touch on hero")
isFingerOnGlow = true
}
}
}
有時候它可以工作,控制檯顯示「開始接觸英雄」,有時不會。有沒有更好的方法來編碼第一部分?
那麼我想知道如果我touchesMoved
下面的代碼是有效的:
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
if isFingerOnGlow{
var touch = touches.anyObject() as UITouch!
var touchLocation = touch.locationInNode(self)
var previousLocation = touch.previousLocationInNode(self)
var glow = SKSpriteNode(imageNamed: GlowCategoryName)
// Calculate new position along x for glow
var glowX = glow.position.x + (touchLocation.x - previousLocation.x)
var glowY = glow.position.y + (touchLocation.y - previousLocation.y)
// Limit x so that glow won't leave screen to left or right
glowX = max(glowX, glow.size.width/2)
glowX = min(glowX, size.width - glow.size.width/2)
glow.position = CGPointMake(glowX, glowY)
}
}
...
override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
isFingerOnGlow = false
}
發光應該做什麼?在'touchesMoved'中? – rakeshbs 2015-02-10 17:20:52
獲取應該移動的節點。我在http://www.raywenderlich.com/84341/create-breakout-game-sprite-kit-swift上找到了代碼,然後對其進行了一些修改。但它有時只是起作用。 – ecoguy 2015-02-10 17:24:52