目前,我正在用 Swift(没有 SpriteKit)制作一个只有一个玩家的乒乓球游戏:球可以从视野的各个方向反弹。经过一些研究,我使用这个算法来检测碰撞:
if (rect1.x < rect2.x + rect2.width &&
rect1.x + rect1.width > rect2.x &&
rect1.y < rect2.y + rect2.height &&
rect1.y + rect1.height > rect2.y) {
// collision detected!
}
这工作正常,但我如何检测球击中 Racket 的哪一侧?
我需要知道这一点,因为:如果球击中 Racket 的底部或顶部,我会将 y 增量乘以 -1。如果球击中 Racket 的左侧或右侧,我会将 x 增量乘以 -1。
最佳答案
如果 rect1 和 rect2 都是 CGRect 那么你可以得到中间点......
rect1.midY
和
rect2.midY
然后您可以确定中点球(无论哪个球)高于或低于 Racket 的中点。
if rect1.midY >= rect2.midY
等等...
附带说明一下,您最好为此使用 SpriteKit。但如果你只是为了好玩而这样做,那就继续吧。希望一切顺利。 :-)
关于Swift Pong(无 SpriteKit): Detect side of paddle that the ball hit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56856298/