我有两个图像:球和障碍物。如果球击中障碍物就会结束比赛。
但是因为我的障碍物和球没有被塑造成一个矩形,所以它们看起来像是在它们相互撞击之前的游戏。我知道他们的框架确实相互碰撞。但是在游戏中,我的gameover函数在它看起来像我的球和障碍物相交之前被调用。
希望找到一些帮助,这样我就可以得到这样的结果:我的两个图像看起来真的像是在我的游戏切换功能被调用之前相互碰撞。
if CGRectIntersectsRect(ball.frame, obstacle.frame) {
gameOver()
}
答案 0 :(得分:0)
extension CGPoint {
func distance(to p: CGPoint) -> CGFloat {
return sqrt((p.x - self.x) * (p.x - self.x) + (p.y - self.y) * (p.y - self.y))
}
}
extension UIView {
func collided(with otherView: UIView) -> Bool {
let myRadius = bounds.width/2
let hisRadius = otherView.bounds.width/2
return self.center.distance(to: otherView.center) <= myRadius + hisRadius
}
}
现在它读得很好:
if ball.collided(with: obstacle) {
gameOver()
}