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工具 Cookie 封装
Aug 21 Javascript
js闭包实现按秒计数
Apr 23 Javascript
学习JavaScript设计模式之代理模式
Jan 12 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
Apr 01 Javascript
20分钟打造属于你的Bootstrap站点
Jul 27 Javascript
jQuery实现根据生日计算年龄 星座 生肖
Nov 23 Javascript
Angular2 之 路由与导航详细介绍
May 26 Javascript
vue webuploader 文件上传组件开发
Sep 23 Javascript
JS继承与闭包及JS实现继承的三种方式
Oct 15 Javascript
微信小程序实现横向增长表格的方法
Jul 24 Javascript
浅谈Vue SSR中的Bundle的具有使用
Nov 21 Javascript
jQuery实现简单QQ聊天框
Aug 27 jQuery
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下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
PHP常用编译参数中文说明
2014/09/27 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
小程序实现图片预览裁剪插件
2019/11/22 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
使用SAE部署Python运行环境的教程
2015/05/05 Python
让Python更加充分的使用Sqlite3
2017/12/11 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
python抓取文件夹的所有文件
2018/02/27 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
家长通知书家长评语
2014/04/17 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
求职自我评价怎么写
2015/03/09 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
校长新学期寄语2016
2015/12/04 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL