2017-04-12 17 views
2

我有一个单星的.png图像。我想用这张图片来创建动画明星填充的字母。这是我想要做什么(但明星将在此进行排序的动画,这是我想象可以用粒子特效来完成):使用粒子效果或动画sks文件创建填充字母

enter image description here

我能使用一些潜在的SKS做到这一点每个字母的文件,然后将它们加载到一个更大的场景?另外,如果我只是想用几颗恒星的静态纹理填充标签节点,是否有另一种方法来做到这一点?

+0

你在这里要求一个非常先进的东西。这个问题并不完全符合SO的工作方式,所以我投票结束它,因为它不是一个具体的问题,可能会产生一个具体的答案。我可以给你的一些提示是,你可以使用CGPath来设计你的精灵如何移动的设计,并且你可以使用SKShader来帮助你的星星实现发光效果 – Knight0fDragon

+0

@ Knight0fDragon感谢提示。我认为这是相当具体的,因为我指的是这样做的一种方法,我正在试图确定如何看待这一点。也许我应该编辑以反映我正在试图为每个字母创建单独的动画场景,然后在不使用labelNode的情况下加载这些字母?编辑:我编辑上面。 – illuminatedtype

+0

如果您可以显示您已尝试过的代码,并且可以显示需要调整的具体需求,那么可能会有效,但如果您问的问题可能会产生很多可能的答案,那么它会被归类为过于“宽泛” 。就像在这种情况下,一些答案可能是使用库X/Y,而像我这样的其他人会说要从字体中获取CGPath。我喜欢使用CGPath方法,因为您可以使用SKAction让星星沿着路径移动,并且SKShader将是一个简单的发光类型着色器,我相信您可以在某处在线查找 – Knight0fDragon

回答

3

不理想,但一个简单的实现:

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) 
     } 
    } 

我觉得代码是不言自明,但基本上,你只使用文字作为农作物节点的面具,你掩盖发射器。下面是结果:

enter image description here

这个实现的事情是,火花不要去信界限之外。

+0

这是不是很理想?对我来说看起来很好。它效率低下还是? – illuminatedtype

+0

因为粒子不会超出掩码边界(文本)的范围。但这取决于你。如果你对这种效果感到满意,那么只需调整一个发射器,看看它能为你提供什么。 – Whirlwind

+0

关于表演......我认为它是高性能的,因为它可以。与节点相比,粒子是轻量级的。当然要测试一下,看看你能走多远。 – Whirlwind