![](/img/trans.png)
[英]swift and sprite kit drawing a straight line while dragging your finger on the screen
[英]Draw straight line in Swift with Sprite Kit, creating multiple lines
我正在嘗試使用Swift和Sprite Kit在iOS中制作游戲。 我有以下代碼,但是它正在創建多行。 我想做的是創建一條單行,當用戶在屏幕上拖動手指直到他或她將手指從屏幕上移開時,其末端將跟隨用戶的指尖,然后移至該行留在那里。 我在使用spritekit繪制直線時發現了一個類似的堆棧溢出問題,UITouch創建了多條線 ,但這是用Objective-C編寫的。 而且我認為我說的不完全是我的答案。 我正在使用Xcode 7和Swift 2。
import SpriteKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
}
let path = CGPathCreateMutable()
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touch = touches.first
let position1 = touch!.locationInNode(self)
CGPathMoveToPoint(path, nil, position1.x, position1.y)
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touch = touches.first
let position2 = touch!.locationInNode(self)
CGPathAddLineToPoint(path, nil, position2.x, position2.y)
CGPathCloseSubpath(path)
let line = SKShapeNode()
line.path = path
line.strokeColor = UIColor.blackColor()
line.lineWidth = 5
self.addChild(line)
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
}
任何想法或建議,將不勝感激。 謝謝。
瑞安
我可能錯了,因為我對Swift的游戲開發了解不多。 但是似乎您每次手指越多都在創建線,是否嘗試過在touchesEnded中創建線?
您是否試過了沒有代碼的代碼
CGPathCloseSubpath(path)
根據文檔 ,這是它的作用:
從當前點到當前子路徑的起點附加一條線,並結束子路徑。
而且我不希望您從上次接觸到每行新接觸都需要增加一行。 僅當您想要一行在其開始處結束時,才需要關閉CGPath
。
我會為此作弊:
用所需的線條顏色創建一個非常細的精靈,然后將其端點拉伸到想要的位置。
這實際上是一個由SKSpriteNode制成的矩形框,該框從原點延伸到當前觸摸點。
最好將旋轉后拉伸SKSpriteKit節點(對我而言)的方法是:將其連接到SKNode,然后根據需要旋轉該節點,然后將嵌套的SKSpriteNode拉伸到所需的距離,以達到用戶的當前接觸點。
將SKNode和SKSpriteNode的原點放在左中間的同一位置,並圍繞其旋轉。 或任何在數學上對您有用的方法……對我而言,這最有意義,但它可以是矩形任何邊緣的中心點,然后您可以相應地拉伸。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.