【发布时间】:2021-07-03 19:48:12
【问题描述】:
使用我当前的代码,该节点非常滞后,并且在其轻弹时出于某种原因在随机方向上移动或传送。我该如何解决这个问题,也有人可以解释为什么它会传送并移动到场景中的随机位置。
另外,是否允许仅在从其位置拖动节点时才移动节点,而不是始终位于手势识别器的坐标处?
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))
}
}
【问题讨论】:
标签: ios swift sprite-kit skspritenode skphysicsworld