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 相关文章推荐
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
Sep 09 Javascript
jquer之ajaxQueue简单实现代码
Sep 15 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
Jan 15 Javascript
让图片旋转任意角度及JQuery插件使用介绍
Mar 20 Javascript
jQuery实现带动画效果的二级下拉导航方法
Mar 11 Javascript
JS实现控制表格行文本对齐的方法
Mar 30 Javascript
js实现登录框鼠标拖拽效果
Mar 09 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 jQuery
使用FileReader API创建Vue文件阅读器组件
Apr 03 Javascript
vue中,在本地缓存中读写数据的方法
Sep 21 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
Jan 19 Javascript
详解JS实现系统登录页的登录和验证
Apr 29 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缓存的详解
2013/05/15 PHP
php类的扩展和继承用法实例
2015/06/20 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
2016/12/12 Javascript
JavaScript闭包和范围实例详解
2016/12/19 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
React Native 通告消息竖向轮播组件的封装
2020/08/25 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
Python编程实现正则删除命令功能
2017/08/30 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
Python 串口通信的实现
2020/09/29 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
SQL数据库笔试题
2016/03/08 面试题
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
学习十八大标语
2014/10/09 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
《西门豹》教学反思
2016/02/23 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书
Django 如何实现文件上传下载
2021/04/08 Python
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电