如何在 Swift 3 中生成带有两个 CGPoint 的 CGVector

How to generate a CGVector with two CGPoint in Swift 3

我正在 Swift 3 开发一个小游戏。我想把我的敌人移动到角色位置,我尝试使用这个功能:

let actionTransaction6 = SKAction.move(to: CGPoint(x: 
personaje.position.x, y:personaje.position.y ), duration: 6.0 -  
Double(nivel))

enemigo6.run(actionTransaction6)

但是敌人在到达我角色的初始点时停止了。我知道有一个功能可以移动到特定方向,但我无法 "find" 我的 CGVector。 可能是这样的还是什么?

SKAction.move(by: enemigo6.position - personaje.position, duration: 10)

感谢提前!

没有为 CGPoint 定义的 - 运算符,也没有从两点创建 CGVector 的函数。

只需从组件手动创建矢量:

let movement = CGVector(
    x: enemigo6.x - personaje.position.x,
    y: enemigo6.y - personaje.position.y
)
SKAction.move(by: movement, duration: 10)

制作您自己的扩展程序

import UIKit

extension CGPoint {
    static func - (lhs: CGPoint, rhs: CGPoint) -> CGVector {
        return  CGVector(dx: lhs.x - rhs.x, dy: lhs.y - rhs.y)
    }
}

然后你会得到CGVector = CGPoint - CGPoint。因此您将能够使用您的代码:

SKAction.move(by: enemigo6.position - personaje.position, duration: 10)

以防万一您需要进行其他手术

extension CGPoint {
    static func + (lhs: CGPoint, rhs: CGVector) -> CGPoint {
        return CGPoint(x: lhs.x + rhs.dx, y: lhs.y + rhs.dy)
    }

    static func - (lhs: CGPoint, rhs: CGVector) -> CGPoint {
        return CGPoint(x: lhs.x - rhs.dx, y: lhs.y - rhs.dy)
    }

    static func - (lhs: CGPoint, rhs: CGPoint) -> CGVector {
        return  CGVector(dx: lhs.x - rhs.x, dy: lhs.y - rhs.y)
    }
}