如何为HUD创建一个很酷的深度效果

时间:2016-12-13 08:45:18

标签: ios swift xcode hud

下面的图片是我试图用我的SKScene或SKNodes做的一个完美的例子,或者是否会满足我。

Click to see Picture here, Trust me it explains Alot lol

好的,所以我第一次尝试这个基本上是试图在Y轴上旋转我的SKOverlayScene上的SKNode,这样它可以产生“深入”的影响,但是在查看了有关它的所有问题之后,我发现了它不可能那样做。所以相反,每个人都建议做旧的卡片翻转技巧,你实际上根本不旋转SKNode,而是将其“xScale”因子从1.0改为-0.0。但正如你所看到的那样,如果你自己尝试一下,那就不会给我带来影响。

这是它的代码:

    spriteNode.size = CGSize(width: 18, height: 28)
    spriteNode.position = CGPoint(x: 50, y: 10)
    spriteNode.zPosition = 0
    spriteNode.alpha = 1.0
    self.addChild(spriteNode)

    let action0 = SKAction.scaleX(to: 1.0, duration: 3.0)
    let action1 = SKAction.scaleX(to: -1.0, duration: 3.0)
    let action = SKAction.sequence([action0, action1])
    spriteNode.run(action)

这是我尝试将一个UIView或SKScene放到SNCPlane上,以便我可以显示我需要为我的SKScene显示的内容,然后只需在我的SCNScene中旋转SCNPlane以便我可以产生这种效果,但它在各方面都失败了。我不能在SCNplane上得到SKScene甚至出现我曾经做过的一次,在宽高比和像素数方面它的大小非常糟糕,它看起来很扭曲,我无法弄清楚如何让它变得像透明一样png图像,它不显示ex的默认灰色背景。所以基本上可以选择Iguess,但这里有代码。

代码:

class HUDPanel: UIView { //SKScene {

override init(frame: CGRect) {
    super.init(frame: frame)

    //self.opaque = true
    self.alpha = 1.0
    self.layer.cornerRadius = 5
    self.layer.masksToBounds = true
    self.backgroundColor = UIColor.red //.clear

    var imageView : UIImageView
    imageView  = UIImageView(frame:CGRect(x: 0, y: 0, width: 0, height: 0))
    imageView.image = UIImage(named:"art.scnassets/DamageImage-diffuse")
    self.addSubview(imageView)



}
required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

//现在我的SNCScene下面放了:

    let HUDPlane = SCNNode()
    let HUDPlaneMaterial = SCNMaterial()

    HUDPlaneMaterial.diffuse.contents = HUDPanel!
    HUDPlaneMaterial.locksAmbientWithDiffuse = true
    HUDPlaneMaterial.transparency = 1.0
    HUDPlaneMaterial.isDoubleSided = true
    HUDPlaneMaterial.lightingModel = SCNMaterial.LightingModel.constant 
    HUDPlane.castsShadow = true // there are more property with shadow
    HUDPlane.geometry = SCNPlane(width: CGFloat(10.0), height: CGFloat(10.0))
    //HUDPlane.rotation = SCNVector4(x: 1, y: 0, z: 0, w: Float(-M_PI_2))
    HUDPlane.position = SCNVector3Make(UserPlayer.presentation.position.x - 6.0, UserPlayer.presentation.position.y + 20.0, UserPlayer.presentation.position.z - 20.0)
    HUDPlane.geometry!.firstMaterial = HUDPlaneMaterial


    scnView.scene!.rootNode.addChildNode(HUDPlane)

所以基本天气你会告诉我如何用精灵节点,UIView或SKScene来做这个效果。为了匹配效果,我正在图片顶部调查,这是HUD的深度效果。那将是真棒!我一定会把它标记为答案。感谢

0 个答案:

没有答案