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 相关文章推荐
用js实现的抽象CSS圆角效果!!
May 03 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
Oct 06 Javascript
javascript在IE下trim函数无法使用的解决方法
Sep 12 Javascript
js获取元素相对窗口位置的实现代码
Sep 28 Javascript
jQuery中:first选择器用法实例
Dec 30 Javascript
JavaScript中的slice()方法使用详解
Jun 06 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
May 21 Javascript
javascript淘宝主图放大镜功能
Oct 20 Javascript
vue 路由页面之间实现用手指进行滑动的方法
Feb 23 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
Jul 03 Javascript
JS实现可用滑块滑动的缓动图代码
Sep 01 Javascript
Javascript中Microtask和Macrotask鲜为人知的知识点
Apr 02 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打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
2017/06/11 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
Python中使用SAX解析xml实例
2014/11/21 Python
Python操作CouchDB数据库简单示例
2015/03/10 Python
Python中subprocess模块用法实例详解
2015/05/20 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
用python制作个音乐下载器
2021/01/30 Python
外企办公室竞聘演讲稿
2013/12/29 职场文书
幼儿园优秀教师事迹
2014/02/13 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
企业安全生产标语
2014/06/06 职场文书
大学迎新标语
2014/06/26 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
学生检讨书范文
2015/01/27 职场文书
生产现场禁烟通知
2015/04/23 职场文书
市级三好生竞选稿
2015/11/21 职场文书
使用Django框架创建项目
2022/06/10 Python