Nic*_*pes 5 ios scenekit swift
我试图通过触摸移动SceneKit中的节点。我在这里使用代码:使用touch在SceneKit中移动特定节点
我遇到的问题是,每次启动panGesture时,我触摸的对象都会转到场景的左上角以开始移动。从该位置移动并松开是可以的,只是在每次平移开始时,对象都会从左角重置的问题。如果我缩小,它将在此新缩放级别的角上重置自己。
我的代码是:
func CGPointToSCNVector3(view: SCNView, depth: Float, point: CGPoint) -> SCNVector3 {
let projectedOrigin = view.projectPoint(SCNVector3Make(0, 0, depth))
let locationWithz = SCNVector3Make(Float(point.x), Float(point.y), projectedOrigin.z)
return view.unprojectPoint(locationWithz)
}
func dragObject(sender: UIPanGestureRecognizer){
if(movingNow){
let translation = sender.translationInView(sender.view!)
var result : SCNVector3 = CGPointToSCNVector3(objectView, depth: tappedObjectNode.position.z, point: translation)
tappedObjectNode.position = result
}
else{
let hitResults = objectView.hitTest(sender.locationInView(objectView), options: nil)
if hitResults.count > 0 {
movingNow = true
}
}
if(sender.state == UIGestureRecognizerState.Ended) {
}
}
Run Code Online (Sandbox Code Playgroud)
和
override func viewDidLoad() {
super.viewDidLoad()
let scnView = objectView
scnView.backgroundColor = UIColor.whiteColor()
scnView.autoenablesDefaultLighting = true
scnView.allowsCameraControl = true
Run Code Online (Sandbox Code Playgroud)
我暂时通过执行以下操作来禁用dragCam之前的allowCameraControl的平移功能:
globalPanRecognizer = UIPanGestureRecognizer(target: self,
action:#selector(ViewController.dragObject(_:)))
objectView.addGestureRecognizer(globalPanRecognizer)
Run Code Online (Sandbox Code Playgroud)
这些是第一次调用CGPointToSCNVector3内的值:
我玩过CGPointToSCNVector3的不同变体,但没有运气。这种现象的原因是什么?谢谢,
| 归档时间: |
|
| 查看次数: |
3640 次 |
| 最近记录: |