如何使用 Swift 在 SpriteKit 上绘制贝塞尔曲线?

Posted

技术标签:

【中文标题】如何使用 Swift 在 SpriteKit 上绘制贝塞尔曲线?【英文标题】:How do I draw beizer curve on SpriteKit using Swift? 【发布时间】:2017-11-12 11:45:46 【问题描述】:

我正在试图弄清楚如何绘制贝塞尔曲线。我正在构建一个放风筝的游戏,风筝线需要是贝泽曲线。

【问题讨论】:

欢迎来到 Stack Overflow!您似乎在要求某人为您编写一些代码。 Stack Overflow 是一个问答网站,而不是代码编写服务。请see here学习如何写出有效的问题。 @F***Lauer 如果您曾经使用过 2D 游戏引擎,您会意识到许多用户的期望之一就是它可以绘图。 SpriteKit 是一个异常,因为它有可怕的绘图,所以它隐藏了它。更糟糕的是,它无法对贝塞尔曲线进行快速、高效的更改,因此在其所有文档中都无法讨论关于 2D 绘图的内容。典型的苹果公司,它的遗漏比它的说法更多。因此,这很可能是一个人在他们的绳索末端的有效查询。如果你能原谅双关语。 @Confused 我对这个问题发表了评论,因为在我看来,用户向 Google 索要他的请求。在我看来,我比 Mit Sengupta 付出了更多的努力,因为我在谷歌上搜索并在一分钟内找到了六个有希望的链接。 @F***Lauer 然而,您首先建议他寻求编写的代码,而不是谷歌搜索的课程。而且您还没有尝试过任何链接......也没有意识到没有高性能的解决方案。这是,如果你知道这个框架,不仅仅是一个好奇,这是一个真正的框架问题,除了我的“答案”中的链接之外没有提到任何地方。 好了,已经够了。 -_- 【参考方案1】:

SKShapeNode 接受贝塞尔线条和其他线条,但您必须在 Apple 或您自己的框架中以某种方式在其他地方以某种方式表达这些线条,并为其创建 CGPath。

而且你不能动态调整传递的 CGPath,你必须为每一个变化替换它。

这只会加剧 SKShapeNode 性能方面的巨大问题。这很可悲。

阅读此处了解有关其无用性的更多信息:http://sartak.org/2014/03/skshapenode-you-are-dead-to-me.html

很遗憾,您的问题没有很好的答案。

【讨论】:

非常感谢!非常感谢! :) 我找到了这个解决方案 cocoapods.org/pods/BezierCurveView 。您对此有何看法? 这会更慢。它使用 drawRect(),这是一个关于速度的恐怖故事。它使用的 UILayers 不能很好地与 SpriteKit 配合使用。由于您还不是 SpriteKit 用户,我建议您找到一个绘图友好的引擎并使用它。

以上是关于如何使用 Swift 在 SpriteKit 上绘制贝塞尔曲线?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 在 SpriteKit 上绘制贝塞尔曲线?

如何使用 Swift 正确切换 SpriteKit 中的 SKScene?

如何使用 Swift 在 SpriteKit 程序中初始化/移动相机?

如何使用 swift 使用带有 spriteKit 的情节提要

如何使用 Swift 5 在 SpriteKit 中以某个角度应用Impulse?

使用 swift 和 spritekit,你如何阻止场景在变得活跃/移动到前台后取消暂停?