目前,我正在制作一个乒乓球游戏在斯威夫特(没有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!
}

这样做很好,但是我怎么能检测出球打在桨的哪一边呢?
我需要知道这一点是因为:如果球碰到了球拍的底部或顶部,我会把y的增量乘以-1。如果球打到桨的左边或右边,我会把x的增量乘以-1。

最佳答案

如果rect1和rect2都是cgrect,那么可以用…

rect1.midY

以及
rect2.midY

然后,你可以找到中点球(无论是哪一个)是否高于或低于桨的中点。
if rect1.midY >= rect2.midY

等。。。
另一方面,你最好用SpriteKit来做这个。但如果你只是为了好玩,那就继续吧。希望能成功。:-)

10-08 20:13