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 相关文章推荐
asp.net 30分钟掌握无刷新 Repeater
Sep 16 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
Sep 11 Javascript
jQuery 选择同时包含两个class的元素的实现方法
Jun 01 Javascript
js事件源window.event.srcElement兼容性写法(详解)
Nov 25 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
Apr 11 Javascript
基于vue2.0实现简单轮播图
Nov 27 Javascript
webpack4 css打包压缩问题的解决
May 18 Javascript
vue如何进行动画的封装
Sep 26 Javascript
jQuery Datatables 动态列+跨列合并实现代码
Jan 30 jQuery
深入分析JavaScript 事件循环(Event Loop)
Jun 19 Javascript
js实现盒子拖拽动画效果
Aug 09 Javascript
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
js仿微信抢红包功能
2020/09/25 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
python解析xml文件实例分享
2013/12/04 Python
Python常用随机数与随机字符串方法实例
2015/04/09 Python
python实现用户登陆邮件通知的方法
2015/07/09 Python
python selenium 弹出框处理的实现
2019/02/26 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
Django模板标签中url使用详解(url跳转到指定页面)
2020/03/19 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
Vichy薇姿加拿大官网:法国药妆,全球专业敏感肌护肤领先品牌
2018/07/11 全球购物
银行会计财务工作个人的自我评价
2013/10/29 职场文书
受伤赔偿协议书
2014/09/24 职场文书
服务整改报告
2014/11/06 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
Java基础-封装和继承
2021/07/02 Java/Android
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript