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中的对象 推荐
Jan 09 Javascript
Jquery中基本选择器用法实例详解
May 18 Javascript
Javascript中的作用域和上下文深入理解
Jul 03 Javascript
Wireshark基本介绍和学习TCP三次握手
Aug 15 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
Oct 24 Javascript
vue-resouce设置请求头的三种方法
Sep 12 Javascript
Bootstrap Table实现定时刷新数据的方法
Aug 13 Javascript
Vue页面跳转动画效果的实现方法
Sep 23 Javascript
深入理解react-router 路由的实现原理
Sep 26 Javascript
vue 属性拦截实现双向绑定的实例代码
Oct 24 Javascript
在js文件中引入(调用)另一个js文件的三种方法
Sep 11 Javascript
JS前端轻量fabric.js系列之画布初始化
Aug 05 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
开源SNS系统-ThinkSNS
2008/05/18 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
php实现RSA加密类实例
2015/03/26 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
使用jQuery实现的掷色子游戏动画效果
2014/03/14 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
jquery实现公告翻滚效果
2015/02/27 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
vue 的点击事件获取当前点击的元素方法
2018/09/15 Javascript
JS简单判断是否在微信浏览器打开的方法示例
2019/01/08 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python logging类库使用例子
2014/11/22 Python
Python中的pack和unpack的使用
2018/03/12 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
Python SVM(支持向量机)实现方法完整示例
2018/06/19 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
SQL面试题
2013/04/30 面试题
学院书画协会部门岗位职责
2013/12/01 职场文书
工地门卫岗位职责
2013/12/30 职场文书
管理信息系学生的自我评价
2014/01/11 职场文书
业务员岗位职责
2015/02/03 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers