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字符串连接性能问题有争议
Jan 12 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
Jan 10 Javascript
模拟一个类似百度google的模糊搜索下拉列表
Apr 15 Javascript
jquery利用命名空间移除绑定事件的方法
Mar 11 Javascript
每天一篇javascript学习小结(RegExp对象)
Nov 17 Javascript
js计算系统当前日期是星期几的方法
Jul 14 Javascript
vuex实现简易计数器
Oct 27 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
Jun 28 Javascript
vue-cli webpack 引入swiper的操作方法
Sep 15 Javascript
vue中的适配px2rem示例代码
Nov 19 Javascript
es6 symbol的实现方法示例
Apr 02 Javascript
canvas多重阴影发光效果实现
Apr 20 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原生模板引擎 最简单的模板引擎
2012/04/25 PHP
php表单提交实例讲解
2015/11/12 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
js CSS操作方法集合
2008/10/31 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
nodejs实现HTTPS发起POST请求
2015/04/23 NodeJs
介绍JavaScript的一个微型模版
2015/06/24 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
express express-session的使用小结
2018/12/12 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
Python 初始化多维数组代码
2008/09/06 Python
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
python万年历实现代码 含运行结果
2017/05/20 Python
python实现比较文件内容异同
2018/06/22 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
英国床垫在线:Mattress Online
2016/12/07 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
.net C#面试题
2012/08/28 面试题
J2EE相关知识面试题
2013/08/26 面试题
应聘英语教师求职信
2014/04/24 职场文书
电子商务专业求职信
2014/07/10 职场文书
庆六一活动总结
2014/08/29 职场文书
弄虚作假心得体会
2014/09/10 职场文书
开平碉楼导游词
2015/02/06 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
微信小程序用户授权最佳实践指南
2021/05/08 Javascript