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

Swift3 如何在Swift 3中生成带有两个CGPoint的CGVector,swift3,sprite,Swift3,Sprite,我正在swift3中开发一个小游戏。我想将我的敌人移动到角色位置,我尝试使用此功能: let actionTransaction6 = SKAction.move(to: CGPoint(x: personaje.position.x, y:personaje.position.y ), duration: 6.0 - Double(nivel)) enemigo6.run(actionTransaction6) 但是当敌人到达我角色的初始点时,他们就停止了。我知道有一个函数可以移动到

我正在
swift3
中开发一个小游戏。我想将我的敌人移动到角色位置,我尝试使用此功能:

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

enemigo6.run(actionTransaction6)
但是当敌人到达我角色的初始点时,他们就停止了。我知道有一个函数可以移动到特定的方向,但我无法“找到”我的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)

没有为
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)
    }
}

做你自己的分机

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)
    }
}
SKAction.move(by:…,duration:…)与SKAction.move(to:…,duration:…)的操作相同,我不知道为什么@SulthanThe SKAction.move(by:…,duration:…)与SKAction.move(to:…,duration:…)执行相同的操作,我不知道为什么@苏丹