如何创建从一个点(CGPoint)“指向”另一点的CGVector

时间:2019-08-20 11:46:47

标签: macos sprite-kit skspritenode swift5

我想为SKAction.move使用CGVector,它将一个SKSpriteNode移向另一个SKSpriteNode。

我要使用以下代码:

let point: CGPoint = CGPoint(x: CGFloat(arc4random_uniform(UInt32(size.width))), y: CGFloat(arc4random_uniform(UInt32(size.height))))
let object: SKSpriteNode = SKSpriteNode(color: NSColor.red, size: CGSize(width: 10, height: 10))
object.position = CGPoint(x: 50, y: 50)
addChild(object)
object.run(SKAction.move(by: CGVector(), duration: 2.5)) // <- Vector from `object.position` to `point`

1 个答案:

答案 0 :(得分:1)

您需要使用向量数学 因此,查看您的代码,您想使用如下代码:

let P1 = point
let P2 = object.position
//Find offset
let offset = P1 - P2
//Set X and Y distance to move
let distX = CGFloat(offset.x)
let distY = CGFloat(offset.y)
//set vector
let vec = CGVector(dx: distX, dy: distY)
//Set action
object.run(SKAction.move(by: vec, duration: 2.4)

让我知道你的生活