【问题标题】:How could I skew/shear a sprite via SpriteKit like Cocos2D?我怎样才能通过像 Cocos2D 这样的 SpriteKit 倾斜/剪切精灵?
【发布时间】:2014-12-24 05:05:52
【问题描述】:

在 Cocos2D-x 中,CCNode 类提供了“skewX”和“skewY”让我对精灵做一些扭曲,但是我在 SpriteKit 的 SKNode 中找不到类似的映射。

我的游戏使用 Flash 来移植骨骼动画,其中精灵的定位、缩放、旋转和剪切配置将被分解为游戏引擎的消化系统。除了剪切之外,所有其他配置都有解决方案需要在 SpriteKit 中完成。

【问题讨论】:

  • 我不认为 sprite kit 可以做到这一点,但我很想看到有人提供解决方案
  • 这可以通过自定义着色器实现

标签: cocos2d-iphone sprite-kit


【解决方案1】:

您可以使用 CGAffineTransform、CoreImage 过滤器和 SKEffectNode 实现倾斜效果

let transform      = CGAffineTransform(a: 1, b: 0.1, c: -0.3, d: 1, tx: 0, ty: 0)
let transformValue = NSValue(cgAffineTransform: transform)

let transformFilter = CIFilter(name: "CIAffineTransform")!
transformFilter.setValue(transformValue, forKey: "inputTransform")

let effectNode = SKEffectNode()
effectNode.addChild(sprite) // <-- Add sprite to effect node

effectNode.filter = transformFilter
effectNode.shouldRasterize = true
effectNode.shouldEnableEffects = true

【讨论】:

    【解决方案2】:

    不,你不能。

    SKNode 没有 skew* 属性。而SKShader 只允许使用片段着色器。这意味着您可以随意更改每个像素的颜色,但不能更改精灵的形状。

    所以我建议你使用Cocos2d-SwiftCocos2d-x等来代替SpriteKit。

    另一个选项是 UIView。 You can use the matrix from Adobe Flash to UIView via CALayer transform.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 2018-11-29
      • 2015-11-12
      相关资源
      最近更新 更多