我正在尝试在屏幕上获取节点的大小。这是代码:
var v1 = SCNVector3(x:0, y:0, z:0)
var v2 = SCNVector3(x:0, y:0, z:0)
carNode.getBoundingBoxMin(&v1, max: &v2)
print(v2)
carNode.scale = SCNVector3(0.9, 1.2, 0.5)
//carNode.transform = SCNMatrix4MakeScale(0.9, 1.2, 0.5)
carNode.getBoundingBoxMin(&v1, max: &v2)
print(v2)
但是,getBoundingBoxMin之前和之后返回的值是相同的,好像没有考虑缩放比例。这是为什么?我需要此信息来为碰撞检测节点上的物理物体设置正确的大小,并确定其他节点是否在距对象一定范围内。
SCNBoundingVolume协议的...方法测量对象在对象的局部坐标空间中的位置和大小,以框或球表示。
缩放节点不会更改其局部坐标空间。这样您将获得正确的结果。
不过,您可能不需要执行任何操作。SCNPhysicsShapeScaleKey
文档下的注释(在SCNPhysicsShape
类参考下:
在模拟碰撞时,SceneKit的物理模拟会忽略包含物理实体的节点的比例属性。而是在创建自定义物理形状时使用此选项提供比例因子。(如果在未指定自定义形状的情况下为节点创建物理实体,SceneKit将使用节点的scale属性在创建时推断此比例因子。)
因此,如果没有自动应用比例因子,则(SCNPhysicsShape.init(node:options:)
使用选项键SCNPhysicsShapeScaleKey
)将比例向量传递给,(我尚未测试),您会做所需的事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句