【问题标题】:How do I create an outline for my SKSpriteNode around the png texture in swift?如何在 swift 中围绕 png 纹理为我的 SKSpriteNode 创建轮廓?
【发布时间】:2021-11-17 10:02:58
【问题描述】:

我正在用 Swift(SpriteKit) 制作游戏,当游戏中的角色拿起一个道具时,我希望他得到一个紫色的轮廓,以便玩家可以看到他的道具已准备好使用.我希望轮廓能够准确地拥抱玩家的所有曲线。有什么方法可以在不是基本形状(如圆形或方形)的精灵节点周围绘制轮廓,而是勾勒出复杂的形状?

这是一个类似于我的精灵节点的形状示例:

这是另一个我想在 SpriteKit 中添加视觉轮廓的播放器示例(我只是画了草图,但我希望它很明显):

他们的玩家还可以通过翻阅动画图集来制作腿部动画,并且当行走动画发生时,轮廓最好留在腿部周围。这可能吗?

为了清楚起见,我只是想要一个用于视觉目的的轮廓,这样玩家就知道他们的“加电”护盾是激活的,所以如果他们被击中它就不会伤害他们。

【问题讨论】:

  • “有什么办法吗?”这是什么?
  • @ElTomato 抱歉刚刚编辑了帖子以使其更清晰。
  • 您可以使用SKShapeNode 创建一个具有stroke 属性的节点。因此,如有必要,请使用SKShapeNodeUIBezierPath
  • 我认为你有四个合理的选择... 1)动画中不同姿势的特殊加电版本。 2)对姿势进行一些自动图像处理,例如模糊和颜色设置,将它们添加到您的图集中,然后在通电时在背景通电前使用具有常规角色的两个精灵堆栈. 3) 像#2 一样制作一个用于模糊和重新着色的着色器,然后将常规图像堆叠在图像+着色器的顶部。 4)如果字符着色足够简单(例如黑白字符),您可以制作一个着色器来添加轮廓而无需堆叠。

标签: swift xcode sprite-kit skspritenode


【解决方案1】:

我已经有几年没有涉足 SpriteKit 了,如果我没记错的话,完美的碰撞检测,而动画不是开箱即用的。

查看文档后,我发现 SKPhysicsBody 有一个 init(texture:size:) 初始化程序。这至少应该让你更接近一点。

来自 Apple 的 guide 可能值得一读。 (像素完美碰撞检测代价高昂)。

【讨论】:

  • 嘿,抱歉,我认为我没有在原始帖子中表达清楚。我实际上只是想知道如何为视觉目的添加轮廓。刚刚编辑了我的原始帖子以使其更清晰。感谢您的回复!
猜你喜欢
  • 1970-01-01
  • 2016-11-07
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多