
Scene Kit
|
259
讨论
要想在场景中看到地,或者看出物体在
3D
空间中的位置,使用
SCNFloor
是个好
办法。
我们还可以为
SCNFloor
对象添加物理学特性,这样就能为放置在它上面的物体提
供一个支持平面:
let floorPhysicsBody =
SCNPhysicsBody(type: SCNPhysicsBodyType.static,
shape: SCNPhysicsShape(geometry: floor, options: nil))
floorNode.physicsBody = floorPhysicsBody
8.15
点击测试
问题
当我们在屏幕上点击时,能够获得被点击对象的信息。
解决方案
可以使用
SCNView
的
hitTest
函数:
// locationToQuery
是一个
CGPoint
,使用的是视图空间
//
找出是哪个点被点击
let sceneView = self.view as! SCNView
let hits = sceneView.hitTest(locationToQuery,
options: nil)
for hit in hits {
print("Found a node: \(hit.node)")
}
讨论
hitTest
返回位于某个点上的所有对象。它返回的是多个节点;如果只需要返回第
一个节点,可以将
options
参数设置为一个字典
[SCNHitTestFirstFoundOnlyKey: ...