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,检测,碰撞
0
投稿

猜你喜欢

  • 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
  • 教你快速掌握两个SQL Server的维护技巧

    2009-01-15 13:31:00
  • 一文详解go mod依赖管理详情

    2023-07-13 04:35:06
  • 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
  • jsp下页面跳转的几种方法小结

    2023-07-22 00:38:07
  • GO语言入门学习之基本数据类型字符串

    2023-07-16 08:26:31
  • 用PHP编写和读取XML的几种方式

    2023-11-18 22:30:27
  • asp之家 网络编程 m.aspxhome.com