登录

行业动态 业界参考 市场动态 活动消息 社会广角

游戏策划 入门指南 文案模板 游戏分析 系统架构 设计技巧 综合讨论 项目管理 市场运营

程序教程 程序入门 游戏编程 网络编程 窗口编程 人工智能 算法结构 引擎设计 引擎应用 图形渲染 物理系统 设计理论 算法结构 引擎设计 场景管理 脚本语言 移动平台

美术教程 美术基础 手绘教程 象素设计 PhotoShop Painter 3Dmax MAYA OpenCanvas 后期制作

手机游戏 手游动态 手游开发 移动平台

网页游戏 网页游戏开发 Flash游戏开发

您现在的位置: 游戏开发学院-游戏屋 >> 游戏学院 >> 网页游戏 >> Flash游戏开发 >> 正文

[组图][碰撞实现\数学实现非mc检测]

[碰撞实现\数学实现非mc检测]

今次发1个用于实现各种碰撞的组件,和扩展和使用这个组件的代码。
按此在新窗口浏览图片

恩- -以前发过1个低版本的,今次更新1下最新的~~。。

首先看个演示吧:
点击浏览该文件

例子中是4种不同的碰撞模型:hitArea检测,ball,plane,point
文件包

点击浏览该文件

包内物品简介- -:

例子文件包括example.fla example.swf

组件文件reflector.swc

类声明包为目录xp

4个组件应用代码和付赠1块logo

reflector组件中包装了用于实现碰撞的基类xp.gameLib.reflect.Reflector(和其他很多个class- -)

xp.gameLib.reflect.Reflector实现了追踪检测的目标,纪录数据等功能,而碰撞检测的具体功能由用户编写自己的代码实现。这次的dd里包含了4个已经实现好的比较常用的碰撞:


点对hitArea的碰撞检测;
点对球形物体的碰撞;
点对平板的碰撞;
点对点的碰撞;

分别对应4个as文件:
HitAreaReflector.as
ArcReflector.as
PlaneReflector.as
PointReflector.as
碰撞模型简介
和上次发的东西类似,碰撞的使用不需要用户进行更多的操作,只需要处理由reflector发出的事件即可。

点对hitArea的碰撞适用于很少的环境,因为reflector设计的目标是精确的碰撞计算,使用hitArea就失去了意义。这里只是给个例子。。= =

点对球的碰撞中,ArcReflector创建了1个圆形的区域,并计算运动的点与这个园的碰撞,并根据结果发出相应的事件。

点对平面的碰撞中,PlaneReflector创建1个条线来检查穿过这条线的运动的点。

点对点的碰撞中,PointReflector创建1个有1定有效范围的点,来检测运动的点与它的碰撞

数学计算虽然增加了精确度,但也使程序变慢。这几个模型适用于碰撞较少的场合,支持超高速运动而不会发生穿过的情况。
使用组件的代码范例
包内的as文件是组件的实用示例。这个组件没有提供什么实际功能,只是包装几个class的功能。虽然放在场景中也会显示出参数面板。。。- -。表被迷惑。。

组件包装的主要的1个类是xp.gameLib.reflect.Reflector,也就是我们需要继承的类。其他还有很多零碎。

每个as文件都是1个类,他们都继承于xp.gameLib.reflect.Reflector,每个类需要实现2个主要的函数来实现碰撞功能:

collisionCalculate
被系统调用,用于计算碰撞,参数给出了待检测的点的信息,用户实现这个函数计算碰撞,并需要返回1个boolean值表示是否发生了碰撞。

update
更新数据用。当系统需要更新数据时,调用这个函数。

可以翻看包内的几个as文件,具体

[1] [2] [3] [4] [5] [6] 下一页

标签TAG:[组图][碰撞实现\数学实现非mc检测]打印本文打印本文

  • 上一篇文章:

  • 下一篇文章:
  • [碰撞实现\数学实现非mc检测]