![](/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.