【问题标题】:How can I get a light node in scene kit to be directly above the person at all times?如何让场景工具包中的灯光节点始终位于人的正上方?
【发布时间】:2016-06-05 22:53:11
【问题描述】:

我正在创建一个灯光,它是一个聚光灯,我想跟随这个人(也是一个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

【问题讨论】:

  • 光节点移动不就是跟着你的person节点移动吗?
  • 将轻节点附加到人节点而不是根节点。如果您的人员节点旋转,则将人员节点放在不旋转的容器节点中,并使您的灯光成为该节点的子节点。使用容器节点进行平移(人物和灯光),如果需要旋转人物(比如鞠躬),请使用人物节点。
  • 哇,我很愚蠢,是的,谢谢。我只需要做 - person.addChildNode(light)
  • @bpedit - 你应该重新提交这个作为答案!

标签: ios swift scenekit light


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 2015-04-28
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    相关资源
    最近更新 更多