在我的游戏中,我有 2 个 Sprite ,一个球和一个 Racket 。我试图限制反射的角度,这样它就不会撞到水平方向。我正在使用这段代码来检查接触角:
var impactX = contact.contactNormal.dx
var impactY = contact.contactNormal.dy
var radiansCon: Double = Double(atan((contact.contactNormal.dy / contact.contactNormal.dx)))
var angleCon = Double(radiansCon * 180) / M_PI
//println("Bounce Angle:\(angleCon)")
if(angleCon < 60 && angleCon > 0) {
println("Adjust angle Positive")
} else if (angleCon > -60 && angleCon < 0) {
println("Adjust angle Negative")
}
如何在不改变速度的情况下改变球弹跳的角度?
(我是 sprite kit 的新手所以如果我遗漏任何细节请告诉我)
最佳答案
可能不是最好的方法,但现在可以用:
var impactX = contact.contactNormal.dx
var impactY = contact.contactNormal.dy
var radiansCon: Double = Double(atan((contact.contactNormal.dy / contact.contactNormal.dx)))
var angleCon = Double(radiansCon * 180) / M_PI
if(angleCon < 60 && angleCon > 0) {
var newX = CGFloat(0.5)
var newY = CGFloat(0.85)
self.ball.body.applyImpulse(CGVectorMake(newX, newY))
} else if (angleCon > -60 && angleCon < 0) {
var newX = CGFloat(-0.5)
var newY = CGFloat(0.85)
self.ball.body.applyImpulse(CGVectorMake(newX, newY))
}
关于iphone - 在 SpriteKit 中改变方向而不是速度(swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28856637/