【发布时间】:2017-12-27 13:08:10
【问题描述】:
我正在 sprite kit 中编写一些代码,并希望根据起始位置计算 sprite 的位置,并将其移动到给定的方向和距离。例如,假设我使用 0 表示直线向上的度数,我想将精灵从其当前位置沿 45 度(向上和向右)方向移动 10 个点。
三角学不是我的强项,我一直在努力弄清楚如何应用它。向 45 度方向移动似乎很直接,但我不确定如何计算 110(向下和向右)或 225(向下和向左)这样的方向。
我的第一次尝试是这样的:
public func offset(byDistance distance:CGFloat, inDirection degrees:CGFloat) {
let vertical = sin(degrees) * distance
let horizontal = sqrt(pow(distance, 2.0) + pow(vertical, 2.0))
self.position = self.position.applying(CGAffineTransform(translationX:horizontal, y:vertical))
}
但我认为它不起作用,因为结果如下所示:
Direction 45, distance 88.26 -> New location {75.10, 115.88}
Direction 135, distance 88.26 -> New location {7.79, 88.60}
Direction 225, distance 88.26 -> New location {-82.09, 120.53}
Direction 315, distance 88.26 -> New location {65.76, 110.06}
谁能给我一些关于我哪里出错的线索?
【问题讨论】:
标签: swift