cocos2d-x学习笔记番外篇03:坑爹的矩形碰撞

简介:

 在写炸弹人那个例子时,发现了一个问题,按道理说,主角已经躲开了炸弹爆炸区域,但仍然给炸死了。如图:

我们找到计算矩形相交的代码

 
  1. bool CCRect::CCRectIntersectsRect(const CCRect& rectA, const CCRect& rectB) 
  2.     return !(CCRectGetMaxX(rectA) < CCRectGetMinX(rectB)|| 
  3.             CCRectGetMaxX(rectB) < CCRectGetMinX(rectA)|| 
  4.             CCRectGetMaxY(rectA) < CCRectGetMinY(rectB)|| 
  5.             CCRectGetMaxY(rectB) < CCRectGetMinY(rectA)); 

然后我们随便打开一个函数

 
  1. CGFloat CCRect::CCRectGetMaxX(const CCRect& rect) 
  2.     return rect.origin.x + rect.size.width; 

问题找到了,比如,我声明一个x=0,y=0,w=10,h=10的矩形

那么他的四个极限位置应该是

minX=x

minY=y

maxX=x+w-1

maxY=y+h-1

但是他这里没有-1。所以造成最后结果大了一个点。这个问题,大家尤其要注意。所以在声明的时候,要自己-1,比如上面的矩形就要声明为:

0,0,9,9






 本文转自 老G 51CTO博客,原文链接:http://blog.51cto.com/goldlion/762103,如需转载请自行联系原作者

相关文章
|
4月前
CocosCreator 面试题(二十) Cocos creator 如何实现一个置灰Shader?
CocosCreator 面试题(二十) Cocos creator 如何实现一个置灰Shader?
|
前端开发
autojs之十二圆
使用情景 给孩子画个圆
194 0
|
vr&ar 图形学
【Unity3D 灵巧小知识点】 ☀️ | Unity退出游戏代码
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【Unity3D 灵巧小知识点】 ☀️ | Unity退出游戏代码
|
vr&ar 图形学 索引
【Unity3D 灵巧小知识点】 ☀️ | Unity中如何使用代码切换场景
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【Unity3D 灵巧小知识点】 ☀️ | Unity中如何使用代码切换场景
|
C# 图形学
Unity零基础到进阶 ✨ 使用 Vectrosity 插件 像德芙一样丝滑的画线
Vectrosity画线插件 ☀️ Unity画线插件Vectrosity 🔥 在使用Unity进行开发的过程中,我们在某些时候需要使用到划线功能,使用Unity中的几种划线方法自然可行,但是我们可以用一种更方便的方式来进行划线操作,那就是我们的主角:Vectrosity插件👍!
Unity零基础到进阶 ✨ 使用 Vectrosity 插件 像德芙一样丝滑的画线