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 easyui datagrid动态查询数据实例讲解
Feb 26 Javascript
js判断上传文件的类型和大小示例代码
Oct 18 Javascript
js鼠标点击图片切换效果代码分享
Aug 26 Javascript
javascript 判断两个日期之差的示例代码
Sep 05 Javascript
常用的JQuery函数及功能小结
Mar 24 Javascript
举例讲解如何判断JavaScript中对象的类型
Apr 22 Javascript
基于ES6 Array.of的用法(实例讲解)
Sep 05 Javascript
angular2 ng2 @input和@output理解及示例
Oct 10 Javascript
浅谈react 同构之样式直出
Nov 07 Javascript
angular实现页面打印局部功能的思考与方法
Apr 13 Javascript
JavaScript实现创建自定义对象的常用方式总结
Jul 09 Javascript
JQuery Ajax执行跨域请求数据的解决方案
Dec 10 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模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)
2009/08/03 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
Dom操作之兼容技巧分享
2011/09/20 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
Python连接字符串过程详解
2020/01/06 Python
Python中zip函数如何使用
2020/06/04 Python
keras 多gpu并行运行案例
2020/06/10 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
教师自我评价范例
2013/09/24 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
毕业评语大全
2014/05/04 职场文书
廉洁教育学习材料
2014/05/19 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
暑期社会实践证明书
2014/11/17 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
大一学生个人总结
2015/02/15 职场文书
超级礼物观后感
2015/06/15 职场文书
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸