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 去除数组的重复元素
May 04 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
Jan 06 Javascript
JavaScript的作用域和块级作用域概念理解
Sep 21 Javascript
常用的JavaScript WEB操作方法分享
Feb 28 Javascript
javascript格式化日期时间方法汇总
Jun 19 Javascript
AngularJS  双向数据绑定详解简单实例
Oct 20 Javascript
JavaScript的兼容性与调试技巧
Nov 22 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 Javascript
JS实现的简单标签点击切换功能示例
Sep 21 Javascript
详解Vue demo实现商品列表的展示
May 07 Javascript
vue之a-table中实现清空选中的数据
Nov 07 Javascript
带你彻底理解JavaScript中的原型对象
Apr 14 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
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
2017/12/28 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
python3写的简单本地文件上传服务器实例
2018/06/04 Python
Python中偏函数用法示例
2018/06/07 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
详解PyTorch手写数字识别(MNIST数据集)
2019/08/16 Python
Python如何实现FTP功能
2020/05/28 Python
Python中Qslider控件实操详解
2021/02/20 Python
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
业务员简历自我评价
2014/03/06 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
找规律教学反思
2016/02/23 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL