pygame两个圆形碰撞检测
时间: 2023-05-31 19:02:32 浏览: 117
以下是使用pygame进行两个圆形碰撞检测的示例代码:
```python
import pygame
import math
pygame.init()
# 设置窗口大小和标题
SCREEN_WIDTH, SCREEN_HEIGHT = 800, 600
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Circle Collision Detection")
# 定义圆形
circle1_pos = [200, 200]
circle1_radius = 50
circle2_pos = [400, 300]
circle2_radius = 80
# 定义颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
# 游戏循环
running = True
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 清空屏幕
screen.fill(WHITE)
# 绘制圆形
pygame.draw.circle(screen, BLACK, circle1_pos, circle1_radius)
pygame.draw.circle(screen, BLACK, circle2_pos, circle2_radius)
# 检测圆形碰撞
distance = math.sqrt((circle1_pos[0] - circle2_pos[0]) ** 2 + (circle1_pos[1] - circle2_pos[1]) ** 2)
if distance <= (circle1_radius + circle2_radius):
# 如果发生碰撞,将圆形2的颜色设置为绿色
pygame.draw.circle(screen, GREEN, circle2_pos, circle2_radius)
# 刷新屏幕
pygame.display.flip()
# 退出游戏
pygame.quit()
```
在这个示例代码中,我们在游戏循环中绘制两个圆形,并检测它们是否发生碰撞。如果两个圆形相交,则将第二个圆形的颜色设置为绿色。我们使用`math.sqrt`函数计算两个圆形中心之间的距离,并将其与两个圆形半径之和进行比较。如果距离小于或等于半径之和,则发生碰撞。
阅读全文