簡體   English   中英

在Swift中使用Sprite Kit繪制直線,創建多條線

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM