坐标转换以及碰撞检测
来源:互联网 发布:java构造方法的重载 编辑:程序博客网 时间:2024/05/24 01:37
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();
}
- 坐标转换以及碰撞检测
- iOS碰撞检测 - 坐标转换
- hge 像素碰撞检测 以及 碰撞
- 碰撞的方向判定,和坐标转换
- iOS 碰撞检测以及事件响应
- 投影坐标,平面以及坐标转换
- 碰撞检测
- 碰撞检测
- 碰撞检测
- 碰撞检测
- 碰撞检测
- 碰撞检测
- 碰撞检测
- 碰撞检测
- 碰撞检测
- 碰撞检测
- 碰撞检测
- 碰撞检测
- 关于“正则”
- oracle监听问题
- POJ 2892 Tunnel Warfare
- JDBC简单学生管理系统
- Mac 下 移动硬盘只读解决方案
- 坐标转换以及碰撞检测
- Uva 10815 c++ stl 之set 输入流
- HTML&CSS基础学习笔记1.25-input标签的选择文件和隐藏元素
- 汇编
- 我的WCF数据服务(三)胜利
- Android view之点赞容易,取消不易
- 编译工具链制作神器 - crosstool-ng
- js前台传递json字符串数组到后台有后台转换成list集合或其他格式的问题解决
- ZooKeeper常见问题整理