碰撞检测是游戏的一个重要组成部分,我们这里使用一种最简单的方法,就是获取精灵的矩形碰撞框。当然圆形的碰撞检测也比较简单,其他形状就复杂多了。
首先是如何获取矩形碰撞框:
var hBox=this.hero.getBoundingBox();//主角碰撞框
var eBox=this.enemy.getBoundingBox();//敌人碰撞框
其次如何判断他们发生了碰撞:
if(cc.rectIntersectsRect(hBox, eBox)){//判断主角与敌人是否发生碰撞
//这里写发生碰撞后要执行的代码
}
现在我们要让主角发射的子弹在击中敌人的时候能消失,好吧,有上面的基础,直接上代码吧。
新建一个函数update,在ctor函数中this.schedule(this.update);每帧调用update。

 update:function(){
var i;
var hBox=this.hero.getBoundingBox();//主角碰撞框
var eBox=this.enemy.getBoundingBox();//敌人碰撞框
for(i in this._bullets){//遍历所有子弹
var bullet=this._bullets[i];
var bBox=bullet.getBoundingBox();//子弹碰撞框
if(cc.rectIntersectsRect(bBox,eBox)){//判断子弹与敌人是否发生碰撞
this._bullets.splice(i, 1);//从子弹数组中删除子弹
this.removeChild(bullet,true);//移除子弹
}
}
}

好了,debug,发现子弹打到敌人会消失了。

cocos2dx - JS - 碰撞检测的更多相关文章

  1. cocos2d-x JS 开启远程代码调试

    为了方便服务端与测试部门的工作需要,把客户端的写的程序可以在其他电脑上运行,方便他人工作与测试. 下面是cocos2d-x JS WebStorm 的设置方法.

  2. Cocos2dx+lua合适还是Cocos2dx+js合适?

    问题: 开发cocos2dx手游Cocos2dx+lua合适还是Cocos2dx+js合适 百牛信息技术bainiu.ltd整理发布于博客园 回答: 作者:廖宇雷链接:https://www.zhih ...

  3. cocos2d-x JS 各类点、圆、矩形之间的简单碰撞检测

    这里总结了一下点.圆.矩形之间的简单碰撞检测算法 (ps:矩形不包括旋转状态) 点和圆的碰撞检测: 1.计算点和圆心的距离 2.判断点与圆心的距离是否小于圆的半 isCollision: functi ...

  4. cocos2dx js 3.2 热更新

    COCOS IDE用手机调试更新是正常的,是预想的结果,但用COCOS IDE打包发布APK,安装到手机上,热更新下载图片.JSON UI什么的都能正常更新替换,但JS脚本没有替换,这是为毛.更新文件 ...

  5. cocos2dx js文件加密为jsc文件

    发布产品,脚本代码是必须要加密的 偶尔会出现编译后的jsc无法运行,或者某些jsb自定义的函数找不到, 最好将require("jsb.js")的全部内容整合到一个文件,然后编译j ...

  6. cocos2d-x JS 纯代码实现人物头像裁剪

    有时候为了方便会直接用颜色层和过渡层来显示一些信息,但层只有方角没有圆角不太美观,于是我用剪切节点实现了一个圆角层.方便以后使用.   当然,如果使用Cosos Studio 操作会更好一些,省去了坐 ...

  7. cocos2dx JS 游戏切到后台再进入游戏的处理

    由于Cocos引擎中,游戏切入后台后定时器后停掉会让某个Animation动作停止. 导致当重新进入游戏时,看到的不是你想要的画面.或者定时器倒计时的时间对不上等问题. cc.game.EVENT_H ...

  8. cocos2d-x JS 定时器暂停方法

    this.scheduleOnce(function(){ this.addChild(Menugobtn);//要暂停执行的代码 }, 10);

  9. cocos2d-x JS 本地玩家位置跟服务器玩家位置转换相关

    //各种游戏人数情况下的本地位置配置mb.LOCAL_POS_LIST = { 2 : [0, 2], 3 : [0, 1, 3], 4 : [0, 1, 2, 3]}; /*------------ ...

随机推荐

  1. HDU 1506 & 1505 - Largest Rectangle in a Histogram & City Game

    Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  2. [No0000179]改善C#程序的建议2:C#中dynamic的正确用法

    dynamic是FrameWork4.0的新特性.dynamic的出现让C#具有了弱语言类型的特性.编译器在编译的时候不再对类型进行检查,编译期默认dynamic对象支持你想要的任何特性.比如,即使你 ...

  3. virtuanenv+flask

    1.virtualenv&flask 专门为特定项目创建一个目录和一个虚拟的Python 运行环境 # 1.安装 virtualenv$ pip3 install virtualenv #.创 ...

  4. 关于nginx重新编译

    nginx安装成功后,发现有一些其他模块没有编译进去,或者想额外添加一些模块,这时候就要重新编译nginx. 首先,查看之前编译的一些参数,比如: 1 2 3 4 5 [root@lmode ngin ...

  5. 彻底卸载tv

    1.卸载 2.C:\Program Files (x86),找到teamviewer选项,右击删除 3.开始--输入regedit,打开注册表,找到如下路径:HKEY_LOCAL_MACHINE\SO ...

  6. LeetCode 888 Fair Candy Swap 解题报告

    题目要求 Alice and Bob have candy bars of different sizes: A[i] is the size of the i-th bar of candy tha ...

  7. Appium入门(4)__ Appium Client安装

    打算使用 Python 语言编写 appium 自动化测试脚本 一.前提: 1.安装Python语言 到Python官网下载最新版本:https://www.python.org/ 2.安装Pytho ...

  8. wait()函数的详细分析

    之前一直没太深入的去理解wait()函数,今天机缘巧合之前又看了看,发现之前没有真正的理解该函数. 众所周知,wait()函数一般用在父进程中等待回收子进程的资源,而防止僵尸进程的产生. (In UN ...

  9. 根据xml配置使用反射动态生成对象

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="htt ...

  10. sqlite数据导入mysql

    sqlite导出数据 1.首先将sqlite数据库中的数据库格式由db或者db3等转为.sql格式,方法如下: 首先是不修改路径的情况下,在命令行下(方法一): sqlite3 database_na ...