首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SCNAction移动SCNLight

使用SCNAction移动SCNLight
EN

Stack Overflow用户
提问于 2016-02-24 04:41:30
回答 1查看 315关注 0票数 4

我有一个聚光灯,用下面的代码创建,在我所有的节点上投射阴影:

代码语言:javascript
复制
 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轴移动,摄影机具有使其移动的无限动画:

代码语言:javascript
复制
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,但闪烁仍然存在。使用方向,我实际上松开了我的大部分阴影。如果我稍后创建一个新的灯光节点,就好像我有两个“太阳”,这当然是不可能的。最终的目标很简单,就是要有一个无限的光线,从左边平行于场景,将所有的阴影投射到右边。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-02-24 05:00:00

构建一个节点树来同时保存聚光灯和摄影机。

例如,将cameraRigNode创建为不带几何体的SCNNode。像现在一样创建cameraContainerNode和spotlightNode。但使它们成为cameraRigNode的子节点,而不是场景的根节点。

对cameraRigNode应用moveAction。现在,摄影机和灯光将一起移动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35587744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档