【发布时间】:2020-04-29 12:26:22
【问题描述】:
我想制作一款积木游戏。 我有一个球想朝画线的方向射。
这是我的投篮方式:
let ang = angle(between: balls.first!.position, ending: CGPoint(x: guideLine.frame.maxX, y: guideLine.frame.maxY))
let force = CGVector(dx:cos(ang) * gameSpeed, dy:sin(ang) * gameSpeed)
for i in 0..<balls.count {
DispatchQueue.main.asyncAfter(deadline: .now() + Double(i) * 0.1) {
if !balls.isEmpty {
balls[i].physicsBody!.applyImpulse(force)
}
}
}
这是我的“角度”函数,它将两个位置转换为角度:
func angle(between starting: CGPoint, ending: CGPoint) -> CGFloat {
let center = CGPoint(x: ending.x - starting.x, y: ending.y - starting.y)
let radians = atan2(center.y, center.x)
let degrees = GLKMathRadiansToDegrees(Float(radians))
return degrees > 0 ? CGFloat(degrees) : CGFloat(degrees + degrees)
}
如您所见,我从球所在的位置获取线的起点,并从线 maxX 和 maxY 本身获取线的终点...... 我不确定它的正确方法......
结果很奇怪!球会朝它想去的任何方向,每次都不一样(有时在我的线旁边,有时很远),我想不通。
以下是截图:
【问题讨论】:
标签: swift sprite-kit nodes scenekit angle