我怎样才能通过像 Cocos2D 这样的 SpriteKit 倾斜/剪切精灵?
Posted
技术标签:
【中文标题】我怎样才能通过像 Cocos2D 这样的 SpriteKit 倾斜/剪切精灵?【英文标题】:How could I skew/shear a sprite via SpriteKit like Cocos2D? 【发布时间】:2014-12-24 05:05:52 【问题描述】:在 Cocos2D-x 中,CCNode 类提供了“skewX”和“skewY”让我对精灵做一些扭曲,但是我在 SpriteKit 的 SKNode 中找不到类似的映射。
我的游戏使用 Flash 来移植骨骼动画,其中精灵的定位、缩放、旋转和剪切配置将被分解为游戏引擎的消化系统。除了剪切之外,所有其他配置都有解决方案需要在 SpriteKit 中完成。
【问题讨论】:
我不认为 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-Swift、Cocos2d-x等来代替SpriteKit。
另一个选项是 UIView。 You can use the matrix from Adobe Flash to UIView via CALayer transform.
【讨论】:
以上是关于我怎样才能通过像 Cocos2D 这样的 SpriteKit 倾斜/剪切精灵?的主要内容,如果未能解决你的问题,请参考以下文章
我怎样才能像这样的 Facebook 帖子一样显示专辑图片?