
spotlight.type = SCNlightTypeSpot spotlight.spotInnerAngle = 50.0 spotlight.spotOuterangle = 150.0 spotlight.castsShadow = true spotlight.shadowMode = SCNShadowMode.Deferred spotlightNode.light = spotlight spotlightNode.eulerAngles = SCNVector3(x: GLKMathdegreesToradians(-90),y: 0,z: 0) spotlightNode.position = levelData.coordinatesForGrIDposition(column: 0,row: playerGrIDRow) spotlightNode.position.y = 1.5 rootNode.addChildNode(spotlightNode)
场景沿z轴移动,相机有一个无限动画使其移动:
let moveAction = SCNAction.moveByX(0.0,y: 0.0,z: CGfloat(-GameVariables.segmentSize / 2),duration: 2.0)cameraContainerNode.runAction(SCNAction.repeatActionForever(moveAction))
当相机移动时,光线不会,所以过了一会儿,整个场景都是黑暗的.我想用相机移动灯光,但是如果我将相同的移动动画应用于灯光节点,则所有阴影都会开始闪烁.我试图将SCNShadowMode更改为Forward,将灯光类型更改为Directional,但闪烁仍然存在.有方向性,我实际上放弃了大部分阴影.如果我稍后创建一个新的光节点,似乎我有两个“太阳”,这当然是不可能的.最终目标只是让一个无限的光线从左边平行于场景照射,将所有阴影投射到右边.有任何想法吗?
解决方法 构建节点树以保持聚光灯和相机.比如,将cameraRigNode创建为没有几何体的SCNNode.以与现在相同的方式创建cameraContainerNode和spotlightNode.但是让他们成为cameraRigNode的孩子,而不是场景的根节点.
将moveAction应用于cameraRigNode.相机和灯光现在都会一起移动.
总结以上是内存溢出为你收集整理的ios – 使用SCNAction移动SCNLight全部内容,希望文章能够帮你解决ios – 使用SCNAction移动SCNLight所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)