如何在 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)
}
}
我正在 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)
}
}