【Cocosd2d实例教程八】Cocos2d实现碰撞检测(含实例)
来源:互联网 发布:如何进入淘宝卖家后台 编辑:程序博客网 时间:2024/05/21 18:37
(转载请注明出处:http://blog.csdn.net/buptgshengod)
1.介绍
说到碰撞检测,最简单直观的例子就是超级玛丽里的吃金币功能,当两个物体碰撞在一起产生一定的效果。下面上图介绍下这章的实例。当机器人a走到机器人b的身上时,机器人b消失。
2.具体实现方式
其实思路很简单,就是规定每个精灵有他们自己的一个作用范围,当两个精灵的作用范围重叠时,一个精灵的不可见就可以了。
关于摇杆器控制精灵移动这些在前面的章节讲过了,就不多说。
首先在HelloWorldLayer.h中定义精灵。
CCSprite *player;//机器人a CCSprite *enemy;//机器人b打开HelloWorldLayer.m。在init中改变代码
-(id) init{// always call "super" init// Apple recommends to re-assign "self" with the "super's" return valueif( (self=[super init]) ) { //get screen's sizeCGSize winSize = [[CCDirector sharedDirector] winSize];//获得屏幕大小 //机器人b enemy = [CCSprite spriteWithFile:@"2.png"]; enemy.position = CGPointMake(winSize.width / 2+120,winSize.height/2); [self addChild:enemy z:1]; //机器人a player = [CCSprite spriteWithFile:@"1.png"]; player.position = CGPointMake(winSize.width / 2-50,winSize.height/2); [self addChild:player z:1]; self.isTouchEnabled = YES; [self initJoystick];//遥感器 [self scheduleUpdate];//启动定时刷新}return self;}加入摇杆控制函数,这里不多说了。
下面是关键的碰撞检测代码。
-(void) update:(ccTime)dt{ [self collisionDetection:dt];//刷新下面定义的函数}//确定可碰撞范围,作用域。CGRectMake四个参数意义:前两个相对于左上角的x,y轴位置确定一个矩形,后两个是举行的长和宽-(CGRect) rectOfSprite:(CCSprite*)sprite{ return CGRectMake(sprite.position.x - sprite.contentSize.width / 2, sprite.position.y - sprite.contentSize.height /2, sprite.contentSize.width, sprite.contentSize.height);}//碰撞方法-(void) collisionDetection:(ccTime)dt{ //2.enemy & player collision detection CGRect enemyRect = [self rectOfSprite:enemy]; CGRect playRect = [self rectOfSprite:player]; if (enemy.visible&& CGRectIntersectsRect(enemyRect, playRect)) { enemy.visible = NO;//机器人b消失 [self unscheduleUpdate];//停止刷新 } }
源代码下载地址
- 【Cocosd2d实例教程八】Cocos2d实现碰撞检测(含实例)
- 【Cocosd2d实例教程四】Cocos2d实现人物原地走动
- 【Cocosd2d实例教程六】Cocos2d实现屏幕背景的自动滚动
- 【Cocosd2d实例教程七】Cocos2d实现超炫的粒子效果!!
- Cocosd2d 使用box2d完成碰撞检测
- 【Cocosd2d实例教程三】Cocos2d瓦片地图的导入
- 【Cocosd2d实例教程五】Cocos2d添加虚拟摇杆控制器
- Cocos2d-x 3.2 lua飞机大战开发实例(二)敌机类的封装,以及碰撞检测的实现
- cocos2d滑动碰撞检测的实现
- cocos2d-x游戏开发 跑酷(八) 对象管理 碰撞检测
- cocos2d-x游戏开发 跑酷(八) 对象管理 碰撞检测
- 第一个项目(八)碰撞检测
- 使用cocos2d-js-3.0RC1中的物理引擎chipmunk模拟的“别碰钉子”源码分享(含碰撞检测)
- cocos2d-x 碰撞检测
- cocos2d-x 碰撞检测
- cocos2d-x 检测碰撞
- Cocos2d-x碰撞检测
- cocos2d之碰撞检测
- source insight快捷键及使用技巧
- 【框架-MFC】vs 2005 菜单实现,菜单子键名称的修改
- P6spy日志问题 为什么每条sql打印两遍
- ABAP中的Table Control编程
- awk实现求和、平均、最大值和最小值的计算操作
- 【Cocosd2d实例教程八】Cocos2d实现碰撞检测(含实例)
- MVC Entity Framework
- ShellExecute, WinExec, CreateProcess区别
- android javamail 邮件备注内容
- 动态规划算法0-1背包问题java实现
- 黑马程序员----java面向对象02(继承、final)
- 同步调用 回调 异步调用
- 教你如何从Google Map爬数据(切片)
- 贪心算法java实现