Я нашел достойное (но не очень хорошее) решение. Эта функция возвращает true
, если мяч касается левой или правой стороны лопатки, и false
, если мяч касается верхней или нижней части лопатки.
func touchHorizontalPaddle() -> Bool {
if abs(ball.origin.x + ball.width - paddle.origin.x) < 1 ||
abs(ball.origin.x - (paddle.origin.x + paddle.width)) < 1 {
return true
}
return false
}
Основная проблема с этой функцией заключается в том, что часть «меньше 1» жестко закодирована. Таким образом, если скорость мяча слишком высока или приращение слишком велико, условный оператор может быть испорчен. В целом, однако, это работает довольно хорошо.