坐标转换以及碰撞检测
2016-08-19 09:51
197 查看
1.当点击一个对象时,需要做的碰撞检测
var listener = cc.EventListener.create({
event:cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches:true, //吞没事件
onTouchBegan: function (touch,event) {
if(that.IsReachTarget) return;
var target = event.getCurrentTarget(); //当前点击的对象
var pos = touch.getLocation(); //获取当前全局点击点坐标
var s = target.getContentSize(); //获取点击对象的尺寸
var rect = cc.rect(0, 0, s.width, s.height); //对象的框型区域
var localPoint = target.convertToNodeSpace(pos); //转换为本地坐标 (把点击的全局坐标点转换为对应对象的局域坐标)
if (cc.rectContainsPoint(rect, localPoint)) { //检测点和对象的碰撞
//cc.log(target.g_sherd_name);
target.zIndex = SHRED_NUM*SHRED_NUM;
return true
}else{
return false
}
2.上面的例子,也可以吧对象的坐标转为世界坐标
var target = event.getCurrentTarget(); //当前点击的对象
var pos = touch.getLocation(); //获取当前全局点击点坐标
var s = target.getContentSize(); //获取点击对象的尺寸
var localPoint = target.convertToWorldSpace(cc.p(0,0));
//转换为全局坐标(对象的局域坐标点转换为世界坐标)
var rect = cc.rect(localPoint.x,localPoint.y, s.width, s.height); //对象的框型区域
if (cc.rectContainsPoint(rect,pos)) { //检测碰撞
cc.log(target.g_sherd_name);
return true
}else{
return false
}
3.两个框体之间的碰撞检测,就拿我曾经做过的飞机游戏为例:
var rect1 = myPlane.getBoundingBox(); //获得我放飞机的框体尺寸
var rect2 = enemyPlane.getBoundingBox(); //获取敌方飞机的框体尺寸
if(cc.rectIntersectsRect(rect1, rect2)){ //检测两个框体的碰撞
this.removeFromParent(true);
myplane.beHit();
}
var listener = cc.EventListener.create({
event:cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches:true, //吞没事件
onTouchBegan: function (touch,event) {
if(that.IsReachTarget) return;
var target = event.getCurrentTarget(); //当前点击的对象
var pos = touch.getLocation(); //获取当前全局点击点坐标
var s = target.getContentSize(); //获取点击对象的尺寸
var rect = cc.rect(0, 0, s.width, s.height); //对象的框型区域
var localPoint = target.convertToNodeSpace(pos); //转换为本地坐标 (把点击的全局坐标点转换为对应对象的局域坐标)
if (cc.rectContainsPoint(rect, localPoint)) { //检测点和对象的碰撞
//cc.log(target.g_sherd_name);
target.zIndex = SHRED_NUM*SHRED_NUM;
return true
}else{
return false
}
2.上面的例子,也可以吧对象的坐标转为世界坐标
var target = event.getCurrentTarget(); //当前点击的对象
var pos = touch.getLocation(); //获取当前全局点击点坐标
var s = target.getContentSize(); //获取点击对象的尺寸
var localPoint = target.convertToWorldSpace(cc.p(0,0));
//转换为全局坐标(对象的局域坐标点转换为世界坐标)
var rect = cc.rect(localPoint.x,localPoint.y, s.width, s.height); //对象的框型区域
if (cc.rectContainsPoint(rect,pos)) { //检测碰撞
cc.log(target.g_sherd_name);
return true
}else{
return false
}
3.两个框体之间的碰撞检测,就拿我曾经做过的飞机游戏为例:
var rect1 = myPlane.getBoundingBox(); //获得我放飞机的框体尺寸
var rect2 = enemyPlane.getBoundingBox(); //获取敌方飞机的框体尺寸
if(cc.rectIntersectsRect(rect1, rect2)){ //检测两个框体的碰撞
this.removeFromParent(true);
myplane.beHit();
}
相关文章推荐
- hge 像素碰撞检测 以及 碰撞
- 滚动背景的制作以及简单的碰撞检测
- libgdx游戏引擎开发笔记(十二)SuperJumper游戏例子的讲解(篇六)---- .游戏主人公创建以及碰撞检测
- cocos2d-x 2.X demo学习笔记 9 ----Touches 触摸事件 以及碰撞检测
- quick-cocos2d-x 飞机大战(打飞机)小demo教程------碰撞检测以及胜负
- Space Shooter之子弹和敌人碰撞检测、爆炸特效以及敌人的运动
- iOS碰撞检测 - 坐标转换
- cocos2d-x 不同层控制精灵以及碰撞检测
- Cocos2d-x 3.2 lua飞机大战开发实例(二)敌机类的封装,以及碰撞检测的实现
- cocos2dx重力感应中的碰撞检测以及对墙角模型的完善检测
- libgdx 像素鸟 增加碰撞检测 以及添加管道
- iOS 碰撞检测以及事件响应
- 基于投影方法的碰撞检测以及一个测试DEMO【C + SDL】
- 碰撞检测(小球与舞台以及挡板碰撞的判断)
- Box2d_无规则图形的碰撞检测 和 cocos2d_粒子效果制作以及粒子效果的辅助工具
- 场景管理(二):场景上物体间以及物体地图间的碰撞检测(射线碰撞方式检测)
- [Unity3D插件]2dToolKit系列三 碰撞检测功能的实现以及障碍物的随机摆放
- 拖拽的基本函数(已有限制范围和修复浏览器默认行为以及磁性吸附、碰撞检测、改变层大小、模拟滚动条)
- Unity 如何实现控制主角以及碰撞检测