gpt4 book ai didi

cocoa - 当 SKSpriteNode 仅在屏幕上移动时,如何显示阴影或任何发光效果?

转载 作者:行者123 更新时间:2023-12-03 16:30:40 24 4
gpt4 key购买 nike

我想在 SKSpriteNode 在屏幕上拖动时显示它的任何效果或动画。

我浏览了很多网站,但没有找到我的问题的相关答案。我对 SKSpriteNode 知之甚少。

谁能指导我解决这个问题。

谢谢。

最佳答案

使用工厂来制作阴影:

import SpriteKit

class MAKE {

private static let view:SKView = SKView()

static func makeShadow(from source: SKTexture, rgb: SKColor, a: CGFloat) -> SKSpriteNode {
let shadowNode = SKSpriteNode(texture: source)
shadowNode.colorBlendFactor = 0.5 // makes the following line more effective
shadowNode.color = SKColor.gray // makes for a darker shadow. Off for "glow" shadow
let textureSize = source.size()
let doubleTextureSize = CGSize(width: textureSize.width * 2, height: textureSize.height * 2)
let framer = SKSpriteNode(color: UIColor.clear, size: doubleTextureSize)
framer.addChild(shadowNode)
let filter = CIFilter(name: "CIGaussianBlur")
let blurAmount = 10
filter?.setValue(blurAmount, forKey: kCIInputRadiusKey)
let effectsNode = SKEffectNode()
effectsNode.filter = filter
effectsNode.blendMode = .alpha
effectsNode.addChild(framer)
effectsNode.shouldRasterize = true
let tex = view.texture(from: effectsNode)
let shadow = SKSpriteNode(texture: tex)
shadow.colorBlendFactor = 0.5
shadow.color = rgb
shadow.alpha = a
shadow.zPosition = -1
return shadow
}
}
<小时/>

现在按照您喜欢的方式制作一个按钮,但请确保您创建了一个与您的按钮大小和形状完全相同的 buttonTexture,最好是它的灰色呈现。您需要将其发送到上面的模糊工厂 Shadowmaker,如下所示:

shadowSprite = MAKE.makeShadow(from: buttonTexture, rgb: myColor, a: 0.33)
shadowSprite.position = CGPoint(x: self.frame.midX, y: self.frame.midY - 5)
addChild(shadowSprite)
<小时/>

您可以在此处查看有关工厂运作方式和原因的更多详细信息: Create \(Use) SKView as \(in a) factory \(static class)

关于cocoa - 当 SKSpriteNode 仅在屏幕上移动时,如何显示阴影或任何发光效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41120721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com