我怎样才能通过像 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 帖子一样显示专辑图片?

我怎样才能将数据放在火力库中的孩子之外,我遇到的问题看起来像这样

我怎样才能使这个 JSON 数据在 API 上可用?

我怎样才能让巧克力蛋糕中的所有 ERC20 地址在前端使用

我怎样才能逆IN语法?

我怎样才能制作这个形状的按钮组?