2016-03-31 36 views
0

我想弄清楚如何在特定的y點鎖定SKSpriteNode。當我的手指觸摸屏幕時,節點顯示在我觸摸的點上。這是因爲裏面TouchesBegan方法,我寫的這是行代碼:Swift Spritekit。我怎樣才能鎖定一個特定點的節點?

if isMovable == false { 
    isMovable = true 
    for touch in touches { 
    let location = touch.locationInNode(self) 
    ship.position = location 
    } 
} 

然後,我寫了,而不是爲了這幾行代碼來獲得只有X點:

for touch in touches { 
    let location = touch.locationInNode(self) 
    ship.position = CGPointMake(location, self.frame.height/2 - 200) 
} 

然而,我得到的結果是,該位置不可用,因爲它是CGPoint,而不是CGFloat。我試圖把它當作CGFloat(location),但徒勞無功。有沒有辦法在y點鎖定節點?

我希望的功能是當我觸摸屏幕上的任何位置時,y點被鎖定,這意味着節點只能水平移動,但不能垂直移動。

由於我的英語不夠好,我可能會缺少一些解釋,讓你們更清楚地理解我的問題。我很感謝你瞭解我,並給我解決方案!提前致謝。

回答

0

location變量是CGPoint類型它是:

包含在二維座標系統中的點A的結構。 Apple Documentation

所以,你可以使用同一個變量location得到x位置並鎖定y到您選擇的任何點:

for touch in touches { 
    let location = touch.locationInNode(self) 
    ship.position = CGPointMake(location.x, self.frame.height/2 - 200) 
} 
+0

感謝您的答覆,並且還有它的工作。但是,這不是我想要的。當我點擊屏幕後,一個節點被完全放置在x點和y點上,就像它們被編程一樣。問題在於,在第二次觸摸之後,節點移動並且它不會保持在第一次出現的位置。系統運行時,我希望該節點永遠在那裏。我將如何能夠做到這一點? – bagels

+0

@ryohei那麼你有幾個解決方案。其中之一是直接在你的touchesBegan方法中生成精靈。你創建你的精靈,然後把它的位置分配給你的觸摸位置。 –

相關問題