【问题标题】:Using particle effects or animated sks files to create filled letters使用粒子效果或动画 sks 文件创建填充字母
【发布时间】:2017-04-13 20:08:44
【问题描述】:

我有一个单星的 .png 图像。我想用这张图片来制作充满星星的动画字母。这就是我想做的(但星星会在其中有点动画,我想这可以通过粒子效果来完成):

我可以通过为每个字母使用多个 sks 文件然后将它们加载到一个更大的场景中来做到这一点吗?另外,如果我只是想用几颗星星的静态纹理填充标签节点,有没有其他方法可以做到这一点?

【问题讨论】:

  • 你在这里要求一个非常先进的东西。这个问题并不真正符合 SO 的工作方式,所以我投票关闭它,因为它不是一个可以产生特定答案的特定问题。我可以给你的一些提示是你可以使用 CGPath 来设计你的精灵如何移动,你可以使用 SKShader 来帮助实现你的星星周围的发光效果
  • @Knight0fDragon 感谢您的提示。我认为这是相当具体的,因为我指的是一种方法,我正在尝试确定如何看穿它。也许我应该编辑以反映我正在考虑尝试为每个字母创建一个单独的动画场景,然后在不使用 labelNode 的情况下加载这些字母?已编辑:我在上面进行了编辑。
  • 如果您可以显示您尝试过的代码并且可以显示特定的调整需求,那可能会起作用,但是如果您提出的问题可能会产生很多可能的答案,那么它被归类为太“宽泛”。就像在这种情况下,一些答案可能是使用库 X / Y,而像我这样的其他人会说从字体中获取 CGPath。我喜欢使用 CGPath 方法,因为您可以使用 SKAction 让星星沿着路径移动,而 SKShader 将是一个简单的发光类型着色器,我相信您可以在网上某处找到它
  • @Knight0fDragon 好的,这很公平。如果我有一个更具体的问题,我会试一试。谢谢。

标签: swift sprite-kit


【解决方案1】:

不理想,但很容易实现:

override func didMove(to view: SKView) {

        if let nodeToMask = SKEmitterNode(fileNamed: "firelfies") {

            backgroundColor = .black
            let cropNode = SKCropNode()
            cropNode.position = CGPoint(x: frame.midX, y: frame.midY)
            cropNode.zPosition = 1

            let mask = SKLabelNode(fontNamed: "ArialMT")
            mask.text = "MASK"
            mask.fontColor = .green
            mask.fontSize = 185

            cropNode.maskNode = mask

            nodeToMask.position = CGPoint(x: 0, y: 0)
            nodeToMask.name = "character"
            cropNode.addChild(nodeToMask)

            addChild(cropNode)
        }  
    }

我认为代码是不言自明的,但基本上,您只需将文本用作裁剪节点的蒙版,然后将发射器蒙版。结果如下:

这个实现的问题是火花不会超出字母范围。

【讨论】:

  • 为什么这不理想?在我看来很好。是效率低下……还是?
  • 因为粒子不会超出遮罩(文本)的边界。但这取决于你。如果您对这种效果感到满意,那么只需调整一个发射器,看看它可以为您提供什么。
  • 关于性能...我认为它是高性能的。与节点相比,粒子是轻量级的。当然要测试一下,看看你能走多远。
猜你喜欢
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多