2021年4月7日星期三

How to drag and flick a node in SpriteKit while gravity is present?

With my current code, the node is extremely laggy, and moves or teleports in random directions for some reason when its flicked. How can i fix this, and also can someone explain why it is teleporting and moving to random places in the scene.

Also, is there anyway to allow the node to be moved only when it is dragged from its position, rather than being at the gesturerecognizer's coordinates at all times?

      override func didMove(to view: SKView) {      let gestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.pan(_:)))              view.addGestureRecognizer(gestureRecognizer)      circleNode.physicsBody = SKPhysicsBody(circleOfRadius: 20)      self.physicsWorld.gravity = CGVector(dx: 0, dy: 0)      self.addChild(circleNode)  }      @objc func pan(_ recognizer: UIPanGestureRecognizer) {                   if recognizer.state == .changed {            self.physicsWorld.gravity = CGVector(dx: 0, dy: 0)          var location = recognizer.location(in: self.view!)          location = self.convertPoint(fromView: location)                              circleNode.position = location                                              }            if recognizer.state == .ended {          self.physicsWorld.gravity = CGVector(dx: 0, dy: -9.8)          let transformerX = 1024/self.view!.frame.size.width          let transformerY = 768/self.view!.frame.size.height          let velocity = recognizer.velocity(in: self.view)          circleNode.physicsBody?.applyForce(CGVector(dx: velocity.x * transformerX, dy: velocity.y * transformerY))            }                    }           
https://stackoverflow.com/questions/66995546/how-to-drag-and-flick-a-node-in-spritekit-while-gravity-is-present April 08, 2021 at 07:43AM

没有评论:

发表评论