Pygame 精准检测图像碰撞的问题
作者:Leleprogrammer 发布时间:2022-01-17 17:56:13
标签:Pygame,检测,碰撞
在用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


猜你喜欢
- 前言CORS 即 Cross Origin Resource Sharing 跨域资源共享.跨域请求分两种:简单请求、复杂请求.简单请求简单
- YAHOO.util.Subscriber 与 YAHOO.util.CustomEvent。1. YAHOO
- 数据库操作语句 7. 外连接——交叉查询 7.1 查询 7.2 等值连接 7.3&nb
- 1、表示乘号2、表示倍数,例如:def T(msg,time=1): print((msg+' ')*time)
- 如何使用dialog弹窗1.官网示例因为这次是在手机上用的所以就用了vant组件2.第一步引入vant中的dialog组件官网介绍自行选择安
- 导读:SQL Server数据迁移的知识之前已经为大家介绍了很多,比如SQL Server数据库迁移方法,接下来就为大家详细介绍SQL Se
- 1.多态是指传入不同的对象,产生不同的结果多态指的是一类事物有多种形态(一个抽象类有多个子类,因而多态的概念依赖于继承)定义:多态是一种使用
- 这篇文章主要介绍了python 矢量数据转栅格数据代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 什么是 manimManim 是一个用于精确编程动画的引擎,专为创建解释性数学视频而设计。注意,有两个主要版本的 manim。该存储库最初是
- 背景公司一个golang的项目,使用到了公司的私有仓库,去执行go mod tidy(下载依赖)的时候,到download公司私有库的时候就
- 使用Django框架搭建后端服务器,后台接收前端传递过来xlsx的文件,直接将前端传递的文件转化为DataFrame或直接将文件保存。url
- 前言先介绍下问题:组内有十来台机器,上面用 cron 分别定时执行着一些脚本和 shell 命令,一开始任务少的时候,大家都记得哪台机器执行
- 本文实例讲述了PHP共享内存使用与信号控制。分享给大家供大家参考,具体如下:共享内存共享内存的使用主要是为了能够在同一台机器不同的进程中共享
- 如果有一个多任务多loss的网络,那么在训练时,loss是如何工作的呢?比如下面:model = Model(inputs = input,
- PIL vs PillowPIL: Python Imaging Library,是python的图像处理库。由于PIL不兼容setupto
- 1.代码准备没有语法错误的Python程序:#!/usr/bin/pythonimport numpy as npclass Network
- Mysql安装、配置、优化,供大家参考,具体内容如下Mysql下载首先登入官网下载mysql的安装包,官网地址https://dev.mys
- 一、程序功能:为Repeater实现分页二、窗体设计:1、新建ASP.NET Web应用程序,命名为Repeater2,保存路径为http:
- Scrapy框架简单介绍Scrapy框架是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架,是提取结构性数据而编写的应用
- 1、<DIV id=div1><h1>This is an DIV</h1></div> &