cocos2d-x 不规则碰撞检测 【转载】
原文:http://www.2cto.com/kf/201401/272331.html
//判断有没有点到有材质的部分, p_point相对, CCSprite坐标 (p_point是相对 Sprite锚点的偏移)
bool isClickTheRealSprite(cocos2d::CCSprite* p_sprite, const cocos2d::CCPoint p_point)
{
CCSize l_sizeInPixel = p_sprite->getContentSize();
//得到相对,Sprite左下的偏移
int l_iX = (int)(l_sizeInPixel.width/2.0f + p_point.x);
int l_iY = (int)(l_sizeInPixel.height/2.0f + (int)p_point.y);
CCPoint l_pointBL = ccp(l_iX, l_iY);
CCRect l_rect = CCRect(0, 0, l_sizeInPixel.width, l_sizeInPixel.height);
if(!(l_rect.containsPoint(l_pointBL))){
return false;
}
//开辟出空内存buffer
//unsigned char* l_buffer = (unsigned char*)malloc(l_sizeInPixel.width * l_sizeInPixel.height * 4);
//memset(l_buffer, 0, l_sizeInPixel.width * l_sizeInPixel.height * 4);
uint8_t l_buffer[4];
//写内存
CCSize size = p_sprite->getParent()->getContentSize();
CCRenderTexture* l_renderTexture = CCRenderTexture::create(l_sizeInPixel.width, l_sizeInPixel.height, kCCTexture2DPixelFormat_RGBA8888);
//l_renderTexture->begin();
l_renderTexture->beginWithClear(0, 0, 0, 0);
p_sprite->draw();
glReadPixels(l_pointBL.x, l_pointBL.y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, l_buffer);
l_renderTexture->end();
//透明度
//int l_iValue_A = l_buffer[4*(int)(l_pointBL.y*l_sizeInPixel.width + l_pointBL.x)+3];
int l_iValue_A = l_buffer[3];
//free(l_buffer);
if(l_iValue_A < 5 ){
return false;
}
return true;
}
cocos2d-x 不规则碰撞检测 【转载】的更多相关文章
- Cocos2d Box2D之碰撞检测
		| 版权声明:本文为博主原创文章,未经博主允许不得转载. 在Box2D中碰撞事件由b2ContactListener类函数实现,b2ContactListener是Box2D提供的抽象类,它的抽象 ... 
- Duiib 创建不规则窗口(转载)
		方法一: 转载:http://blog.csdn.net/chenlycly/article/details/46447297 转载:http://blog.csdn.net/harvic880925 ... 
- Duilib 创建不规则窗口(转载)
		方法一: 转载:http://blog.csdn.net/chenlycly/article/details/46447297 转载:http://blog.csdn.net/harvic880925 ... 
- BitmapData类介绍
		今天介绍另外一个比较常用和中高级难度的类:BitmapData 用好这个类,可以说是半支脚踏入了Flash高手的大门···(主要是不是太多的人精通这个··呵呵··)我也可以趁这篇文章的机会好好巩固+学 ... 
- cocos2d(CCSprite绑定不规则刚体与精灵一起移动)
		对于不规则的精灵我们可以借助PhysicsEditor来制作shape , 对于地图可以使用Tiled软件制作瓷砖地图. 今天主要记录一下如何把CCSprite与不规则刚体进行绑定,然后一起移动 // ... 
- 转载+自练(莫喷)怎样在cocos2d 2.1.4里面使用动画和Texture Packer
		本文实践自 Ray Wenderlich.Tony Dahbura 的文章<How to Use Animations and Sprite Sheets in Cocos2D 2.X>, ... 
- Cocos2d-三维拾取Ray-AABB碰撞检测算法【转】
		1.三维拾取技术 在3D游戏中通常会有这样的需求,用户可以选取3D世界中的某些物体进行如拖拽等操作,这时便需要程序通过将二维屏幕上的点坐标转换为三维世界中的坐标,并进行比对,这个过程就需要用到三维拾取 ... 
- Cocos2d-x3.2 使用物理引擎进行碰撞检测[转]
		通常在游戏简单逻辑判断和模拟真实的物理世界时,我们只需要在定时器中判断游戏中各个精灵的条件是否满足判断条件就可以了.例如,在飞机大战中,判断我方子弹和敌机是否发生碰撞一般在定时器中通过敌机所在位置的矩 ... 
- Cocos2d-x3.2总结---使用物理引擎进行碰撞检测
		[转自]: http://blog.csdn.net/cbbbc/article/details/38541099 通常在游戏简单逻辑判断和模拟真实的物理世界时,我们只需要在定时器中判断游戏中各个精灵 ... 
随机推荐
- spring与quartz整合实现分布式动态创建,删除,改变执行时间定时任务(mysql数据库)
			背景:因为在项目中用到了定时任务,当时想到了spring的quartz,写完发现费了很大功夫,光是整合就花了一上午,其中最大的问题就是版本问题,项目中用的是spring3.2.8的版本,查阅发现,3. ... 
- unigui+fastreport 打印【4】
			1.建立一个uniForm,用于建立FastReport打印界面.在Form上增加uniFrame.和传统的的报表打印设计一样一样的. 2.在beofeShow事情中: procedure TUniF ... 
- Ajax_使用 jQuery 实现Ajax
			[jQuery中的Ajax] 1.jQuery对Ajax操作进行了封装,在jQuery中最底层的方法时 $.ajax().第二层是 load() , $.get() 和 $.post(),第三层是 ... 
- Sublime text如何设置快捷键让编写的HTML文件在浏览器预览?
			STEP 1 Tools->Build System->New Build System STEP 2<img src="https://pic3.zhimg.com/ ... 
- cocos2dx 2.1.x  退出SDK相关界面后EGLView 不刷新渲染
			报错内容为: [3390:1456879] failed to call contextcocos2d: surface size: 0x0[3390:1456879] Failed to make ... 
- cocos2dx luajavaBridge 学习笔记
			我在网上看到了 LuaJavaBridge 的 使用方法这篇文章 https://segmentfault.com/a/1190000004252394?utm_source=tuicool& ... 
- HDU 1224 无环有向最长路
			用bellman_ford的方法,将中间不断取较小值,修改为取较大值就可以了 #include <cstdio> #include <cstring> #include < ... 
- [luoguP3252] [JLOI2012]树(DP)
			传送门 树上前缀和. 在树上找一条权值和为 s 的链,其中这个链上的点按深度递增(递减)(不同) dfs 每搜到一个点求它的前缀和 sum[x],放入 set 中. 在 set 中找 sum[x] - ... 
- RMI分布式议程服务学习
			转自:http://6221123.blog.51cto.com/6211123/1112619 这里讲述的是基于JDK1.5的RMI程序搭建,更简单的说是一个 HelloWorld RMI. 1. ... 
- 文化之旅  2012年NOIP全国联赛普及组
			时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超 ... 
