【问题标题】:How to create a CGVector that "points" from one point (CGPoint) to another point如何创建从一个点(CGPoint)“指向”另一点的 CGVector
【发布时间】:2019-12-25 15:08:03
【问题描述】:

我想为 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`

【问题讨论】:

  • 原点A和目标点B的向量定义为B-A。

标签: macos sprite-kit skspritenode swift5


【解决方案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)

告诉我你的进展情况

【讨论】:

  • 很抱歉,但这对我没有帮助。我想用SKAction.move(by: CGVector(), duration: 2.5)移动object
  • 啊我的错误我已经更新了答案再看看
  • 如果我将distXdistY 与任意数字(例如10)相乘,object 会朝这个方向移动吗?
  • 嗨乔乔,是的,它会的!如果你使用像 0.2 这样的 CGFloat,它会移动得更少。不过要小心,不要灰心,乘以这些值不会产生明显的结果。为什么 ??因为它们是基于偏移量......偏移量是点1和点2之间X和Y坐标的差。
  • 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多