javascript制作游戏开发碰撞检测的封装代码


Posted in Javascript onMarch 31, 2015

在JavaScript开发Web游戏时,需要使用到碰撞检测时,为了方便开发,封装了矩形和圆形的两个碰撞检测方式。

【附带案例操作捕获一枚】
【注意:代码上未做优化处理】

演示图

javascript制作游戏开发碰撞检测的封装代码

角色攻击区域碰撞检测.gif

javascript制作游戏开发碰撞检测的封装代码

塔防案例.gif

矩形区域碰撞检测

/**
 * 矩形区域碰撞检测
 * Created by Administrator on 14-4-7.
 * author: marker
 */
function Rectangle(x, y, _width, _height){
  this.x = x;
  this.y = y; 
  this.width = _width;
  this.height = _height;
   
  //碰撞检测(参数为此类)
  this.intersects = function(obj){
    var a_x_w = Math.abs((this.x+this.width/2) - (obj.x+obj.width/2));
    var b_w_w = Math.abs((this.width+obj.width)/2);
    var a_y_h = Math.abs((this.y+this.height/2) - (obj.y+obj.height/2)); 
    var b_h_h = Math.abs((this.height+obj.height)/2);
    if( a_x_w < b_w_w && a_y_h < b_h_h ) return true;
    else return false;
  }
 
}

圆形区域碰撞检测

/**
 * 圆形区域碰撞检测
 * Created by Administrator on 14-4-7.
 * author: marker
 *
 */
function RadiusRectangle(x, y, radius){
  this.x = x;
  this.y = y;
  this.radius = radius;
 
  //碰撞检测(参数为此类)
  this.intersects = function(rr){
    var maxRadius = rr.radius + this.radius;
    // 已知两条直角边的长度 ,可按公式:c²=a²+b² 计算斜边。
    var a = Math.abs(rr.x - this.x);
    var b = Math.abs(rr.y - this.y);
    var distance = Math.sqrt(Math.pow(a,2) + Math.pow(b,2));// 计算圆心距离
    if(distance < maxRadius){
      return true;
    }
    return false;
  }
}

以上所述就是本文的全部内容了,希望能够对大家了解javascript有所帮助。

Javascript 相关文章推荐
JavaScript Archive Network 集合
May 12 Javascript
一个符号插入器 中用到的js代码
Sep 04 Javascript
Javascript 事件流和事件绑定
Jul 16 Javascript
js 纯数字不重复排列的另类方法
Jul 17 Javascript
jQuery动态添加的元素绑定事件处理函数代码
Aug 02 Javascript
JavaScript中定义函数的三种方法
Mar 12 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
Nov 07 Javascript
前端jquery部分很精彩
May 03 Javascript
基于JavaScript实现熔岩灯效果导航菜单
Jan 04 Javascript
Vue-Router进阶之滚动行为详解
Sep 13 Javascript
判断iOS、Android以及PC端的示例代码
Nov 15 Javascript
vue 更改连接后台的api示例
Nov 11 Javascript
jQuery选择器源码解读(二):select方法
Mar 31 #Javascript
jQuery选择器源码解读(一):Sizzle方法
Mar 31 #Javascript
JavaScript中创建字典对象(dictionary)实例
Mar 31 #Javascript
jQuery Ajax调用WCF服务详细教程
Mar 31 #Javascript
JavaScript父子窗体间的调用方法
Mar 31 #Javascript
JavaScript操作cookie类实例
Mar 31 #Javascript
javascript实现简单的贪吃蛇游戏
Mar 31 #Javascript
You might like
PHP下对字符串的递增运算代码
2010/08/21 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
PHP使用pdo实现事务处理操作示例
2018/09/05 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
浅析JavaScript声明变量
2015/12/21 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
Python base64编码解码实例
2015/06/21 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
Python生成器generator用法示例
2018/08/10 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
护理专科毕业推荐信
2013/11/10 职场文书
给民警的表扬信
2014/01/08 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
库房管理员岗位职责
2014/03/09 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书