碰撞检测是游戏的一个重要组成部分,我们这里使用一种最简单的方法,就是获取精灵的矩形碰撞框。当然圆形的碰撞检测也比较简单,其他形状就复杂多了。
首先是如何获取矩形碰撞框:
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,发现子弹打到敌人会消失了。

最新文章

  1. ASP.NET Core应用针对静态文件请求的处理[2]: 条件请求与区间请求
  2. Python 爬虫2
  3. MVC4 +EasyUI Tabs 使用
  4. 读取另一个项目中方法的json
  5. 《Linux内核设计与实现》读书笔记(十七)- 设备与模块
  6. CSS选择器无法找到td
  7. 关于两个php.ini的说明
  8. c语言编程之栈(数组实现)
  9. class A<T>where T
  10. Linux平台 Oracle 18c RAC安装Part2:GI配置
  11. Spring------生命周期
  12. python魔法方法:__getattr__,__setattr__,__getattribute__
  13. 潭州课堂25班:Ph201805201 python 操作数据库 第五课 (课堂笔记)
  14. 维基百科 请求流 webrequest_flow
  15. Excel中复杂跨行跨列数据
  16. python 快速幂求斐波那契数列
  17. php prepare
  18. StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用
  19. ACM 第十四天
  20. Redis Sorted Set

热门文章

  1. 通过Rabbitmq从ipone手机传输imu和相机数据到电脑端
  2. SQL Fundamentals || Oracle SQL语言
  3. find实现特殊功能示例
  4. python3读取excel数据
  5. 无法跨越程序集边界使用程序集“DataCheck, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”中的类型“List<ILayer>”,因为该类型有一个为嵌入互操作类型的泛型类型参数
  6. postgre
  7. day2_webservice接口怎么测-SoapUI
  8. 洛谷P3567 KUR-Couriers [POI2014] 主席树/莫队
  9. 使用Bootstrap Popover实现一个弹框上三角形的代码记录
  10. Verilog如何从外部更改模块内参数