我对 SceneKit 非常陌生,非常感谢您的帮助!
我的 UIView 中有一个 200x200 大小的 SCNView,它位于超级视图的中心。我想在里面放一个 SCNCylinder,这样 SCNCylinder 就可以覆盖整个 SCNView。我读到 Scenekit 的所有这些视图都是以米为单位定义的,那么如何在屏幕尺寸和 SCNCylinder 之间建立关系。
我试过了:
var coinNode = SCNNode()
let coinGeometry = SCNCylinder(radius: 100, height: 2)
coinNode = SCNNode(geometry: coinGeometry)
coinNode.position = SCNVector3Make(0, 0, 0)
coinScene.rootNode.addChildNode(coinNode)
let rotate90AboutZ = SCNAction.rotateByX(-CGFloat(M_PI_2), y: 0.0, z: CGFloat(M_PI_2), duration: 0.0)
coinNode.runAction(rotate90AboutZ)
ibOutletScene.scene = coinScene
但这在我的 coinScene 和 ibOutletScene 之间留有余量。如何删除这个空间?
我也尝试添加相机:
let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3Make(0, 0, 100)
coinScene.rootNode.addChildNode(cameraNode)
但是我看到了随机行为,并且 coinNode 被隐藏了!我应该如何定位我的相机?或者有没有其他方法可以从我的 ibOutletScene 中删除多余的空间?
编辑:如果我不添加相机,这就是它的外观。红色场景和绿色硬币之间有一个边缘。我尝试了多种尺寸的硬币,但除非我添加相机,否则我无法删除此边距。但是,如果我添加相机,我会遇到另一个问题,在这个截图下面提到。
如果我不添加相机,硬币上的旋转动画效果很好,但是如果我添加相机,旋转会放大然后随着动画再次变小。如何在不增加尺寸的情况下沿其轴旋转它?我正在使用以下代码来旋转硬币:相同的代码在没有相机的情况下也可以正常工作,但在添加相机后会放大硬币。签出快照。
let rotate = SCNAction.rotateByX(0, y: -2 * CGFloat(M_PI_2), z: 0, duration: 2)
coinNode.runAction(rotate)