gpt4 book ai didi

ios - 在 SceneKit 游戏中为 SCNNode 设置动画 SCNConstraint (LookAt) 以使过渡渐进

转载 作者:行者123 更新时间:2023-11-28 10:47:16 25 4
gpt4 key购买 nike

一般来说,当一个人想要让游戏中的角色面对相机时,可以使用 SCNLookAtConstraint,这实际上也为我服务。

下面,my_object 是我试图根据约束确定方向的节点。 'Enemy' 指的是场景中的某个节点,pointOfView 是场景的视点。当我点击 my_object 时,它应该会注视敌人一秒钟,然后回到我的 pointOfView。

设置 LookAtConstraint 以便“对象”注视“敌人”一秒钟。

my_object.constraints?.removeAll()
let targetNode = sceneView.scene.rootNode.childNode(withName: (chosenScenarioForChallenge?.shape)!, recursively: true)
let lookAt = SCNLookAtConstraint(target: targetNode)
lookAt.isGimbalLockEnabled = true
my_object.constraints = [lookAt]
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(resetObject), userInfo: nil, repeats: false)

重置对象以查看'敌人'节点后查看我的观点

@objc
func resetObject() {
my_object.constraints?.removeAll()
let targetNode = sceneView.pointOfView
let lookAt = SCNLookAtConstraint(target: targetNode)
lookAt.isGimbalLockEnabled = true
my_object.constraints = [lookAt]
}

我的问题是,我不想突然改变约束。我希望它流畅,因此我想在其中加入动画。在查看了 SCNAction 和 SCNAnimation 之后,我没有找到任何与约束相关的内容。由于约束动态更新位置,我可以理解 SCNAction.move(to/by:) 等将不起作用。最终,当我点击时,我的对象应该开始逐渐看向敌方节点,在 1-2 秒后,它应该会慢慢地回来看我的 pointOfView。

请注意,我不希望角色从技术上看镜头,因此我使用的是 SCNLookAtConstraint,而不是 SCNBillboardConstraint。

指针会有所帮助,TIA。

最佳答案

target属性是可读写的,因此您应该能够重用 SCNLookAtConstraint 实例(而不是创建一个新实例)并仅交换目标。

编辑

influenceFactor约束允许在节点的当前变换和约束计算的变换之间实现更平滑的动画。

关于ios - 在 SceneKit 游戏中为 SCNNode 设置动画 SCNConstraint (LookAt) 以使过渡渐进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47973953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com