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实现同步树
Mar 01 Javascript
JavaScript操作XML文件之XML读取方法
Jun 09 Javascript
jQuery寻找n以内完全数的方法
Jun 24 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
Nov 17 Javascript
Javascript 跨域知识详细介绍
Oct 30 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
Apr 10 Javascript
vuejs 动态添加input框的实例讲解
Aug 24 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
Sep 27 Javascript
Vue.js自定义指令学习使用详解
Oct 19 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
Jul 16 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
Sep 11 Javascript
Vue3实现简易音乐播放器组件
Aug 14 Vue.js
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多文件打包下载的实例代码
2017/07/12 PHP
实现JavaScript中继承的三种方式
2009/10/16 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
javascript中in运算符用法分析
2015/04/28 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
2015/08/17 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
员工拾金不昧表扬信
2014/01/09 职场文书
办护照工作证明范本
2014/01/14 职场文书
个人简历中自我评价
2014/02/11 职场文书
安全生产月活动总结
2014/05/04 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
爱国教育主题班会
2015/08/14 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
Python基础详解之描述符
2021/04/28 Python