我正在Swift 3
开发一款小游戏。我想把我的敌人移到角色位置,我试图使用这个功能:
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)
感谢您提前!
答案 0 :(得分:3)
-
没有定义CGPoint
运算符,也没有从两点创建CGVector
的功能。
只需从组件手动创建矢量:
let movement = CGVector(
x: enemigo6.x - personaje.position.x,
y: enemigo6.y - personaje.position.y
)
SKAction.move(by: movement, duration: 10)
答案 1 :(得分:0)
制作自己的扩展名
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)
}
}