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 CSS修改学习第五章 给“上传”添加样式
Feb 19 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
Nov 06 Javascript
jquery实现的V字形显示效果代码
Oct 27 Javascript
JavaScript中判断数据类型的方法总结
May 24 Javascript
浅析JavaScript中的对象类型Object
May 26 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
Oct 18 Javascript
基于AGS JS开发自定义贴图图层
Mar 31 Javascript
Node 自动化部署的方法
Oct 17 Javascript
JavaScript html5 canvas实现图片上画超链接
Oct 20 Javascript
vue组件发布到npm简单步骤
Nov 30 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
Jan 08 Javascript
JS highcharts动态柱状图原理及实现
Oct 16 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+javascript的日历控件
2009/11/19 PHP
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
JavaScript实现旋转轮播图
2020/08/18 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
中学老师的自我评价
2013/11/07 职场文书
单位门卫岗位职责
2013/12/20 职场文书
办理生育手续介绍信
2014/01/14 职场文书
商业活动邀请函
2014/02/04 职场文书
党的作风建设心得体会
2014/10/22 职场文书
慰问信范文
2015/02/14 职场文书