位置: 编程技术 - 正文

基于像素的碰撞检测(移植到cocos2dx 3.x)(基于像素的分类方法)

编辑:rootadmin
感谢原文: 2.x的,我修改了一下,这个版本是Cocos2d-x 3.x可用版本。Pixel Perfect Collision Detection (Using Cocos2d-x 3.x)This post found its way because I couldnt find the answer to one of the questions I asked on StackOverflow ( and thought there would be others like me in search for an answer.Collision detection is an integral part of almost all games. It is used to find when a bullet hits an enemy or when you bump into a wall etc.There are many different requirements when we do collision detection and depending on our game we choose one of the many detection techniques.The default Collision detection mechanism used by games and provided in almost all game engines and frameworks is a “Bounding Box” collision.Simply put, a “Bounding Box” collision detection system the sprites/objects being checked for collision are treated as the smallest rectangle which completely engulfs them. Then these two Boxes are checked if they are colliding with each other.But sometimes this very simple collision detection system is not accurate. Specially when we use sprites with alpha values (mostly png files) or when our objects are rotated by some angles. See the image below: Pixel – Perfect collision detection is a system where we check if the objects concerned are actually colliding rather than just being part of a bounding box which is bigger than their size. WARNING: This system though more accurate is obviously more performance intensive and hence depending on your game requirements choose wisely about which of the different systems you want to use.TIP: This system though written specially for Cocos2d-x framework can be easily understood and implemented for any language/framework you are using.So its time to get our hands dirty,We are going to develop a Singleton Class for collision detection and just plug and play this in any project we are doing.Things used:1. Singleton Class – CollisionDetection2. Opengl Vertex and Fragment Shaders3. CCRenderTexture Class – Cocos2d-xTheory:1. Create a CCRenderTexture which is going to serve as a secondary draw buffer.2. We first do a simple collision detection (Bounding Box) to check if the two sprite’s bounds are colliding3. If step 2 is a success then we are going to draw the two concerned objects in our secondary buffer we created in step 1. (We are going to set its visibility to false, so that even though we draw something, nothing will we visible to the end user)4. Using openGL fragment shaders we are going to draw one of the objects completely RED and the other completely BLUE! 5. Using another of openGL functionality glReadPixels we are going to read the pixels data of all the pixels in the Rectangular area (Intersection area) of the bounding box collision6. We are then going to loop through all the pixel values and check if a single pixel has BOTH the RED and the BLUE pixels. If they have then the objects are actually colliding or else not.Now here is the code for the above steps. I have commented the code for you to understand what is going on. If there are any questions please leave in the comments and I will try and answer to the best of my knowledge

推荐整理分享基于像素的碰撞检测(移植到cocos2dx 3.x)(基于像素的分类方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:基于像素的图像增强方法是一种非线性灰度变换,像素碰撞检测,像素碰撞检测,基于像素的分类方法,基于像素的图像,也可以称为,像素碰撞检测,基于像素的图像,也可以称为,像素碰撞3d,内容如对您有帮助,希望把文章链接给更多的朋友!

CollisionDetection.h

CollisionDetection.cpp

SolidColorShader.fsh基于像素的碰撞检测(移植到cocos2dx 3.x)(基于像素的分类方法)

SolidVertexShader.vsh

For using the Collision Detection Class:

1. Initialize the CCRenderTexture object

2. Call the Singleton function whenever collision detection required

cocos2dx 3.2 读写XML,基于tinyxml2封装的易使用,更灵活的XML接口。中文国际化。 简介cocos2dx3.2读写XML使用的是tinyxml2库。tinyxml2是一个轻量的解析XML的开源库,C编写,跨平台,内存占用很小。解析文件时,在内存中生成DOM模型,即文

cocos2dx onpause崩 原文:

cocos2dx3.2 xcode中资源路径设置问题 在xcode中,将资源分类,然后将各自的文件夹添加到Resources,运行程序的时候老是报错,说是找不懂资源,原因就是找不到资源路径。那么如何设置呢?1

标签: 基于像素的分类方法

本文链接地址:https://www.jiuchutong.com/biancheng/372619.html 转载请保留说明!

上一篇:Cocos2dx 3.0 实战之—— 重写《超级马里奥》其八 主菜单界面(cocos2d教程)

下一篇:cocos2dx 3.2 读写XML,基于tinyxml2封装的易使用,更灵活的XML接口。中文国际化。(cocos creator读取json)

  • 没有提取盈余公积的情况
  • 弹性预算列表式如何计算
  • 固定资产减少如何处理
  • 分公司法人必须是总公司法人吗
  • 会计能开收据吗?
  • 事业单位法人证书查询
  • 为什么租赁只能20年
  • 应交税金的期末余额怎么算
  • 美金报关出口能不能收跨境人民币
  • 委托加工农产品的扣除率
  • 将外购货物分配给客户
  • 预交增值税附加税费减免吗
  • 当月作废的专票需要账务处理吗
  • 补缴税款罚款
  • 怎么计提企业所得税
  • 消费税征收范围包括
  • 土地增值税计税依据
  • 多付工资计入哪个科目
  • 企业会计制度怎么备案
  • 小规模纳税人如何转一般纳税人
  • 企业法人的工资没有实收可以退税吗
  • 多交的增值税附加税怎么做账
  • 生活补贴和节日补贴区别
  • 固定资产双倍余额递减法计提折旧公式
  • 报关单上的生产销售单位
  • 公司之间可以借款吗怎么做账
  • 没有发票只有收据可以报销吗
  • 如何重装系统win7旗舰版
  • 传媒改革
  • 债务重组收益会计分录怎么做?
  • 如何使用rank函数排名
  • 增值税按简易计价方式
  • 水培吊兰的养殖周期
  • 非货币性资产交换和债务重组的区别
  • php function函数的用法
  • java项目中redis使用实例
  • 公司是否可以开具在职证明
  • 结转成本费用的会计分录是什么?
  • 税务局清税
  • 增值税留抵税额科目如何使用
  • 资产负债表中应交税费为负数是什么意思
  • 电子发票会自动上传吗
  • Win10 64位安装个人版SQL2000图文教程
  • 揭秘蟹卡骗局
  • sql dbo
  • 奖金偶然所得税起征点
  • 企业场地租金收入交什么税
  • 建筑安装结转成本分录
  • 如何计算债券实际收益
  • 应收及预付款项的坏账损失应当于实际发生时计入
  • 开票方与付款方不一致问题
  • 规范的记账凭证是什么
  • sql2005和2000区别
  • vmware_vmx.exe进程在哪里关
  • win10预览版bug
  • linux系统文件系统只读
  • win8系统怎么到桌面
  • win7打开摄像头权限
  • linux用root登录
  • 批处理/l
  • dos删除文件夹下所有文件 不删除父目录
  • perl脚本执行顺序
  • node urlencode
  • shell 正则表达式 *什么意思
  • 动态规划之矩阵连乘
  • 从零开始学什么好
  • jquery显示div
  • 深入浅出css
  • jquery示例
  • Python连接MySQL并使用fetchall()方法过滤特殊字符
  • jquery的validate前端表单验证
  • android ui自动化测试
  • 湖北省税务系统欠税管理工作指南
  • 滴滴排队机制怎么设置
  • 信息咨询费包括什么费用
  • 云阅卷平台登录入口云南省
  • 推进落实类似的词语
  • 江西国税电子税务局
  • 村级服务公开的具体内容
  • 江西税务客服电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设