swift - 如何旋转 SCNNode 跟随线
问题描述
我有一个 SCNNode,我想遵循由 SCNVector3s 表示的点组成的路径。但是,不是简单地从一个点移动到另一个点,我希望它旋转以朝向它移动的每个点的方向。我知道设置 SCNLookAtConstraint 可以对此有所帮助,但我相信这只会控制负 z 轴所面对的方向,但我希望能够控制 y 轴以确保其负 y 轴始终面向朝着轨道。我希望我足够清楚,但请随时要求澄清。谢谢!
解决方案
首先 moveTo() - 听起来你有正确的想法,只需在完成处理程序中重置你的下一步。我假设您手动执行此操作,因此在下一步开始时设置 lookAt 约束并将其指向目标。我“认为”这会做你想做的事,但取决于几件事,比如它移动的速度,你是飞过 targetNode 还是在它上方,某些情况可能会导致它“反弹”。如果我正确理解了您的 y 轴问题 - lookAt 将面向节点并锁定它。如果您在平坦的表面上,我认为这不会有问题。
func moveTo()
{
let vPanelName = moves[moveCount]
let vLaneNode = grid.gridPanels[vPanelName]!.laneNodes[lane]
let vAction = SCNAction.move(to: vLaneNode.presentation.position, duration: TimeInterval(data.getAttackSpeed(vGameType: gameType)))
node.runAction(vAction, completionHandler:
{
self.moveCount += 1
if(self.moveCount >= self.moves.count - 1)
{
self.killMe(vRealKill: false)
return
}
else
{
self.moveTo()
}
})
}
推荐阅读
- c# - C#用“替换“/” - 双引号反冲用双引号和其他
- php - 检查值是否为 x 并且存在,如果都存在则标记为完成
- python - 将模板变量传递给 HiveOperator
- python - PLY 代币优先级问题
- angular - setPath() 在 FormArray 中添加 FormGroup 不起作用
- css - 从 XSS 的角度来看,做 `element.style.setProperty` 是否安全
- excel - 复杂的每个循环
- c++ - C++结构中的回调
- python - 在与pygame碰撞期间增加图像的大小?
- azure - Set-AzureRmDataFactoryV2IntegrationRuntime:找不到方法