ios - 如何让场景套件中的光节点始终位于人的正上方?

标签 ios swift scenekit light

我正在创建一个灯光,它是一个聚光灯,我想跟随这个人(也是一个 SCNNode)从人上方的小聚光灯可见,这是灯的代码 -

let light = SCNNode()
light.light = SCNLight()
light.light?.type = SCNLightTypeSpot
light.scale = SCNVector3Make(1, 1, 1)
light.position = SCNVector3Make(0.076, 3.715, -0.058)
light.eulerAngles = SCNVector3Make(-90, 2.578, -2.238)
let constraint2 = SCNLookAtConstraint(target: person)
constraint2.gimbalLockEnabled = true
light.constraints = [constraint2]
scene.rootNode.addChildNode(light)

所以它在开始时有效,但是当游戏开始时,光线似乎越来越远并充满了整个场景这不是我想要的,我希望它一直在人的正上方而不是变大并填满整个场景,有人可以帮忙吗?谢谢

这是在swift

最佳答案

将您的轻型节点附加到人员节点而不是根节点。如果您的人物节点旋转,则将人物节点放在不旋转的容器节点中,并使您的灯光成为该节点的子节点。使用容器节点进行平移(人和光),如果需要旋转人(比如鞠躬),请使用人节点。

关于ios - 如何让场景套件中的光节点始终位于人的正上方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37647573/

相关文章:

swift - Firebase如何验证登录电子邮件属于数据库中的哪个类别?

swift - SCNGeometry 自定义形状显示为黑色

ios - 如何在 SceneKit 中使用 OBJ 文件或 CTM 文件而不是 DAE 文件?

ios - 多个 TableView 行选择 - Swift

ios - Xcode GUI 与编程枚举中 UIPageViewController.transitionStyle 的不同选项

ios - 在没有核心数据的情况下使用 JSON

ios - 同步 AVAudioPlayerNode 并开始录制 AVAudioEngine

ios - 相机节点随着 iOS 设备的移动而旋转

ios - 我的应用程序仅在 iOS 10 中返回前台时崩溃

ios - 如何通过应用程序从设备的照片库中删除照片?