
256
|
第
8
章
let lookAtConstraint = SCNLookAtConstraint(target: capsuleNode)
//
设置
gimbalLockEnabled
为
true
时,该约束将使被约束对象围绕
//
一个轴旋转
lookAtConstraint.gimbalLockEnabled = true
pointerNode.constraints = [lookAtConstraint]
讨论
一个约束对象用于告诉
Scene Kit
,某个物体的位置和旋转角度将在某种程度上受
制于另外一个对象。例如,我们可以使一个阴影块的
x
轴和
z
轴总是等于玩家角色
的
x
轴和
z
轴,即这个阴影总是位于角色的下方,但当角色向上跃起时,阴影并不
会随之上移。
有几种不同的约束,如:
• Look-at
约束,这种约束使一个对象指向另一个对象。
• Transform
约束,这种约束可以让我们将一个闭包附着在上面,这样可以在每
一帧刷新时改变对象的位置和方向。
• Inverse kinematics (IK)
约束,这种约束允许我们将多个对象链在一起(就像人
的手掌、前臂和上臂一样),当向一个地方移动的时候,会受到每个关节弯曲
度的限制。
8.12
加载
3D
模型文件
问题
有一个对象,它是用
3D
编辑软件建模的,我们如何将它加到
Scene Kit
场景中?
解决方案
我们可以加载
COLLADA
(交互
3D
数字资产交换方案)文件格式的
3D
模型。要
使用
COLLADA
,需要先从磁盘上以文件的方式加载它:
let critterDataURL ...