Pygame 精准检测图像碰撞的问题
作者:Leleprogrammer 时间:2022-01-17 17:56:13
在用Pygame写游戏的时候,有人可能会遇到两个Rect对象碰撞但是对象之间还有空间间隔的问题,这里,将教大家用一种方法精准地检测图像碰撞。
假设我们有两个图像(类型为Surface):surface1,surface2
首先,获得这两个surface对象的rect:
rect1=surface1.get_rect()
rect2=surface2.get_rect()
然后,获取它们对应的mask对象,用pygame.mask.from_surface()方法,使用如下:
pygame.mask.from_surface(surface)
填入的是Surface对象,返回Mask对象
代码如下:
mask1=pygame.mask.from_surface(surface1)
mask2=pygame.mask.from_surface(surface2)
接下来,进行碰撞检测,我们需要用到overlap方法,使用如下:
mask.overlap(other,offset)
mask是一个Mask对象
other是另外一个Mask对象
offset是一个元组,元组中分别为两个rect的x坐标插值和y坐标插值
返回值有两种,如果是一个元组就说明已经碰撞,如果为None就说明没有碰撞
代码如下:
offset=abs(rect1.x-rect2.x),abs(rect1.y-rect2.y)
if rect1.overlap(rect2,offset)!=None: # 已经碰撞
print("已经碰撞")
以上代码只是示例,可供参考,命名不需要和上方一致,符合命名规范就行
来源:https://blog.csdn.net/leleprogrammer/article/details/125450350
标签:Pygame,检测,碰撞
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
ASP中正则表达式的应用
2010-05-27 12:24:00
如何自动备份Oracle数据库
2008-06-13 16:54:00
Python的string模块中的Template类字符串模板用法
2023-02-02 10:53:05
Python 捕获代码中所有异常的方法
2022-08-31 06:44:00
学习Python爬虫的几点建议
2023-08-08 04:29:08
谈谈Javascript中的++和–操作符
2009-05-08 11:43:00
简易的全屏透明遮罩(lightBox)
2010-06-09 20:56:00
在MySQL中获得更好的全文搜索结果
2008-05-09 10:38:00
php利用ob_start()清除输出和选择性输出的方法
2023-11-18 08:54:35
HTML5 离线存储之Web SQL
2011-06-19 14:13:19
Javascript操作cookie的类
2007-08-23 09:36:00
.NET framework 4.0 安装失败回滚问题
2023-07-11 15:50:35
![](https://img.aspxhome.com/file/2023/4/78074_0s.png)
教你快速掌握两个SQL Server的维护技巧
2009-01-15 13:31:00
一文详解go mod依赖管理详情
2023-07-13 04:35:06
![](https://img.aspxhome.com/file/2023/2/99062_0s.png)
javascript模拟php函数in_array
2023-10-15 22:12:49
Django如何继承AbstractUser扩展字段
2023-08-24 06:19:27
GoFrame框架gcache的缓存控制淘汰策略实践示例
2023-07-22 06:41:19
![](https://img.aspxhome.com/file/2023/8/97718_0s.png)
jsp下页面跳转的几种方法小结
2023-07-22 00:38:07
GO语言入门学习之基本数据类型字符串
2023-07-16 08:26:31
用PHP编写和读取XML的几种方式
2023-11-18 22:30:27