Swift Pong(无 SpriteKit): Detect side of paddle that the ball hit

标签 swift collision-detection pong

目前,我正在用 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/

相关文章:

swift - 使用 PhysicsBody 的基本 Swift SpriteKit 碰撞

JavaFX:防止形状拖动到另一个形状上

java - 三桨乒乓球击中检测

javascript - 如何清理这段 JavaScript 代码?

c - 在 C 中的乒乓球中平滑 Racket 运动

swift - 我如何在 Swift 中将 "6 September, 2015"转换为 NSDate()?

swift - Parse - 使用 OR 和 AND 的复合查询?

swift - SceneKit didApplyAnimationsAtTime 计算时间

xcode - 苹果Dsymutil错误 "Unable to Open Executable"

ios - Sprite Kit 碰撞错误 - Swift