【问题标题】:How do I draw a line in SpriteKit with Swift 3?如何使用 Swift 3 在 SpriteKit 中画一条线?
【发布时间】:2018-01-09 06:25:51
【问题描述】:

对于我的一个课程,我制作了一个 javascript 游戏,其中包含跳到屏幕随机部分的字符。我正在尝试将此游戏转换为 Swift(我的编码非常糟糕,这是我使用 Swift 的第三天)。

我得到了字符(SKSpriteNode)在屏幕上弹跳的部分。但出于某种原因,我真的很难画线。我尝试使用 UIBezierPath() 和 CAShapeLayer()。我还尝试了一个 SKSpriteNode。

但是我一直无法在字符的原点和终点之间以适当的角度画一条线。因为角色移动到随机点,所以角度一直在变化,线的大小也需要改变。

这是 Javascript 游戏的图片:

【问题讨论】:

  • 老实说,我无法让它发挥作用。它不会除了“nil”,我为此尝试了某人的解决方案,但我仍然无法让它工作。我彻底查看了stackoverflow,但没有任何工作。
  • 试试let path = CGMutablePath()path.move(to: CGPoint(x:100,y:100))path.addLine(to: CGPoint(x:200,y:200))

标签: swift sprite-kit


【解决方案1】:

你可以这样使用:

var line = SKShapeNode()

func drawLine(from: CGPoint, to: CGPoint){
    line.removeFromParent()
    let path = CGMutablePath()
    path.move(to: from)
    path.addLine(to: to)
    line = SKShapeNode(path: path)
    self.addChild(line)
}

override func update(_ currentTime: TimeInterval) {
    drawLine(from: player.position, to: enemy.position)
}

在这里您创建一个路径并通过path.move(to:) 添加一个起点。然后使用path.addLine(to:) 在另一点添加一行。然后使用 SKShapeNode(path: CGPath) 初始化程序从路径创建一个 SKShapeNode。 SKShapeNode 将在场景中呈现您的线条。最后,只需通过addChild() 将您的节点添加到场景中,并在您的update() 函数中调用此函数,以在玩家或敌人移动时重新创建线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    相关资源
    最近更新 更多