2015-08-13 17 views
5

Aşağıda gösterilen kod ile Sahnemde bir küre var. Mavi arka plana sahip ... iOS'taki sceneKit için yeni oldum.O nesneyi nasıl taşıyabileceğimizi bilmek istiyorum (küreyi) başka bir konuma sürükleyin (Bırakın).Scenekit - nasıl sürükleyebilir ve bırakabilirim

override func viewDidLoad() { 
    super.viewDidLoad() 
    sceneView = SCNView(frame: self.view.frame) 
    sceneView.scene = SCNScene() 
    self.view.addSubview(sceneView) 


    let groundGeometry = SCNFloor() 
    groundGeometry.reflectivity = 0 
    let groundMaterial = SCNMaterial() 
    groundMaterial.diffuse.contents = UIColor.blueColor() 
    groundGeometry.materials = [groundMaterial] 
    ground = SCNNode(geometry: groundGeometry) 

    let camera = SCNCamera() 
    camera.zFar = 10000 
    self.camera = SCNNode() 
    self.camera.camera = camera 
    self.camera.position = SCNVector3(x: -20, y: 15, z: 20) 
    let constraint = SCNLookAtConstraint(target: ground) 
    constraint.gimbalLockEnabled = true 
    self.camera.constraints = [constraint] 

    let ambientLight = SCNLight() 
    ambientLight.color = UIColor.darkGrayColor() 
    ambientLight.type = SCNLightTypeAmbient 
    self.camera.light = ambientLight 

    let spotLight = SCNLight() 
    spotLight.type = SCNLightTypeSpot 
    spotLight.castsShadow = true 
    spotLight.spotInnerAngle = 70.0 
    spotLight.spotOuterAngle = 90.0 
    spotLight.zFar = 500 
    light = SCNNode() 
    light.light = spotLight 
    light.position = SCNVector3(x: 0, y: 25, z: 25) 
    light.constraints = [constraint] 

    let sphereGeometry = SCNSphere(radius: 1.5) 
    let sphereMaterial = SCNMaterial() 
    sphereMaterial.diffuse.contents = UIColor.greenColor() 
    sphereGeometry.materials = [sphereMaterial] 
    sphere1 = SCNNode(geometry: sphereGeometry) 
    sphere1.position = SCNVector3(x: -15, y: 1.5, z: 0) 


    sceneView.scene?.rootNode.addChildNode(self.camera) 
    sceneView.scene?.rootNode.addChildNode(ground) 
    sceneView.scene?.rootNode.addChildNode(light) 

    sceneView.scene?.rootNode.addChildNode(sphere1) 

} 

cevap

1

Mee, onu geri Çözümü genelleme yardımcı olabilir olabilir nesnel-c birkaç ay ile sceneKit çalıştı. Düğümleri sürükleyip bırakmak için UIPanGestureRecognizer'ı kullandım. Bu güzel öğretici http://www.raywenderlich.com/44270/sprite-kit-tutorial-how-to-drag-and-drop-sprites

+0

Hai kontrol edebilirsiniz daha fazla yardım için Daha sonra "handlePanFrom"

- (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { if (recognizer.state == UIGestureRecognizerStateChanged) { //Getting the new location of the view after pan gesture CGPoint translation = [recognizer translationInView:recognizer.view]; //Converting this translation as per the SpriteKit coordinates translation = CGPointMake(translation.x, -translation.y); //Changing the position of sphere node with the translation CGPoint position = [sphere position]; [sphere setPosition:CGPointMake(position.x + translation.x, position.y + translation.y)]; //Resetting the values of recognizer [recognizer setTranslation:CGPointZero inView:recognizer.view]; } else if (recognizer.state == UIGestureRecognizerStateEnded) { float scrollDuration = 1; CGPoint velocity = [recognizer velocityInView:recognizer.view]; //Taking current position of sphere node CGPoint pos = [sphere position]; //Finding change in position on the basis of velocity and scroll duration CGPoint p = mult(velocity, scrollDuration); //Calculating new position of the sphere CGPoint newPos = CGPointMake(pos.x + p.x, pos.y - p.y); [sphere removeAllActions]; //Action for moving the sprite to the new location SKAction *moveTo = [SKAction moveTo:newPos duration:scrollDuration]; [moveTo setTimingMode:SKActionTimingEaseOut]; [sphere runAction:moveTo]; } } 

içinde (hareketli) kaydırma için

// Hareket Tanıyıcı

UIGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)]; [[self view] addGestureRecognizer:panGestureRecognizer]; 

// .. Kod için teşekkürler.Ama iyi çalışmıyor ... Küre SCNNode ve SKAction veremiyorum. (SpriteKit ithal ettim ve SKAction denedim) ve aynı zamanda pozisyon sorunu: I gibi SCNVector pozisyon alma 3 .. CGPoint için dönüştürerek başarısız oldu .. – Mee

+0

Mee..sorry sceneKit yerine spriteKit için kod sağlamak için. Buna dikkat etmeliydim. – Jaideep

+0

scenekit kodunu güncelleyebilir misiniz – madLokesh

İlgili konular