擅长:python、mysql、java
<p>一个快速的解决方案是不仅要检查碰撞,还要检查墙和球的矩形边缘的位置。<br/>
代码应该是不言自明的:</p>
<pre><code>for wall in walls:
if wall.rect.colliderect(ball.rect):
if wall.type == "hwall" and wall.rect.bottom < ball.rect.bottom and ball.y_change > 0:
ball.y_change = -(ball.y_change)
elif wall.type == "hwall" and wall.rect.top > ball.rect.top and ball.y_change < 0:
ball.y_change = -(ball.y_change)
elif wall.type == "vwall" and wall.rect.right < ball.rect.right and ball.x_change > 0:
ball.x_change = -(ball.x_change)
elif wall.type == "vwall" and wall.rect.left > ball.rect.left and ball.x_change < 0:
ball.x_change = -(ball.x_change)
</code></pre>
<p>这样你就可以确定一旦速度分量被翻转,它就不会立即被翻转回来。你知道吗</p>