ActionScript3.0碰撞检测技术分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/ 其 中 p c为 F A H元 件 对 象 。 其 构 造 方 法 参 数 1 构 造 / i LS : BtaDt im p a a宽度 ,2 im p a a高 度 ,3 指 定 位 图 图像 是 :B t aD t : 否支持每个像素具有不 同的透 明度 ,4 :填充颜色设置 ,表达
( 天津 电子信 息职业技术 学院,天 津 3 05 ;2天津 市天安怡和信息技 术有限公 司,天津 030 .
30 0 0 00)
摘要 :本 文 介 绍 了 A t n cp3 c o Sr t. 言 关 于碰 撞 检 测 的各 种 方 法和 手 段 ,结合 F A H 开 发 工具 实现 了各 种 碰 撞 i i 0语 LS
/ 21
V T b d :im p a a = n w B t aD t (i 2w d h a m 2 B t a D t e im p a a p c . it ,
p . e g t t u , ) i2 h ih ,r e0 : c
Y方 向: I(l+h y l/2 一 (2+h/ )J<jh ) y 22 (l+h ) 2
一
撞 的基本思路 是计 算两个 圆心 之间的距离 是否小于两个 圆的 半径和 。假设圆形 A的左上 角坐标 是 (l y) x , 1 ,半径是 r ,圆 l 形 B的左 上角的坐标 是 (2 y ) x , 2 ,半径是 r ,判断 2个圆形对 2 象实现碰撞 公式为:
(1 ~ x ) x 2 + (l — y ) < (1+ r ) Y 2 r 2
计 算 机光 盘软 件 与应 用
2l 第 5 O 2年 期 C m u e :DS f w r n p l c t o s o p trC o t a ea dA p ia in 工程技术
/ 参数说 明:l im p a a图像的左上角 的位置 ,2 / :B t a D t : 碰撞对象数量 一定的情 况下 , 网格碰撞 占用系统 资源较少 , 其 bd m l的最小 的 A p a通道值 ,当低 于此值 的透 明度像素忽略 次是矩形和 圆形碰撞 , 素级检测 占用系统资源较多 , 实际 lh 像 在 碰撞检测 ,3 :另一个待碰撞 B ta D t i m p a a对象 b d ,还可 以 的项 目开发 中选 用较合适 的碰撞检 测方法 是优化设计 的重要 m2 是 R c a g e o n 、B t a 对象,4 e t n l 、P it im p :另一个图像左上角 步, 既要优化性 能又要保证 效果 , 往往采用几种碰撞方法组 位置 ,5 m 2对象最小 A p a通道值 ,低 于此值则忽略碰撞 合使用 , :b d lh 例如先进行 网格碰撞 检测 , 当网格位置接近 时再进行 检测 。 矩形、圆形或者位 图的像 素级检测 ,有些游戏采用矩形和 圆形 由于 图像对象 内部 的部 分可能嵌套在另一个实体 中, 坐标 组合检测不 同碰撞 部分 的方法。 体系可能不 同, 定义 2个待碰撞对象 的左 上角坐 标是为了正确 目前 没有任何 一种完美 的碰撞检测 方法来 适应所 有的项 构 造 各 自的点 , 置 透 明 的 A p a通 道 是 为 了将 具有 一 定 透 明 目开发 ,任何 一种 检测方法 都是为 了满足某类 项 目检测 的需 设 lh 度的点忽略碰撞检测 。 A p a值 为 2 5时仅 检查可 见像素的 要, 当 lh 5 选用合适的碰撞检测方法需要将上述 四种 检测方法灵活变 碰撞 ,而值为 0时则透 明部分也会计算入碰撞 检测。 通,并通过大量 的压力测试来检验最后 的效果 。 以上是 F A H碰撞检测 的四种 常用方法, 过运 行测试在 LS 经
/ 2 l
/pc / i2为另一个元件
b d . r w p c ) m 2 d a (i 2 :
则 R c a g e 形 发 生 了重 叠 即碰 撞 。 etnl 矩
( )使 用 h te tb e t 二 iT sO jc 0方 法仅 需 要将 带入 另 一个 v r b p : im p n w B t a (m 2 :/ B t a D t a m 2 B t a= e im pb d) /将 im p a a D s ly be t 对 象 参 数 即 可 判 断 矩 形 是 否 碰 撞 。例 如 数据写 入位 图对象 b p 。 ip aO j c m 2 d s l be t . iTx 0 j c (ip ao j c2 , 其 中 ip a oj c 1h te tb e td s 1y b et ) 3 使用 B t a D t . im p aa对象的 h t e t iT s 0方法检测 2个位 图
个特 定对象之上或者是一个不规则的形状与另 个点的碰撞检
测 ,但 是 无法 实现 2 不 规则 形状 的碰 撞 检测 。 个 ( ) 二 借助 B t a D t im p a a类和 B ta 类 可 以实现带有透 明 imp
效果的位 图图像的碰撞检测。 im p a a类中包括 h t e t B ta D t i T s 0 方法 , 可实现位 图上像素问 的碰撞检测 , 我们只需要将元件写 入位 图图像就可 以通过该方法实现不规则 图形的碰撞检测 。 实
wk.baidu.com
常用 算法,分析 常用方法的缺点 和优 点,并根据 不同的碰撞要 求总结合理 的碰撞解 决方案 。
关键 词 :F s ;A t n c p3O l h ci Sr t.;碰 撞 检 测 a o i
中图分类号:T 31 2 文献标识码: P 1. 5 A 文章编号:10— 59 02 5 (8— 2 07 99( 1 0一) 0 0 2 ) ( 】
现步骤如下 : 1将 元 件 写 入 位 图 图像 。 .
v r m lB t a D t = n w im p a a p c w dh a b d : i m p a a e B t a D t ( i . i t ,
p ch ih ,r e0 : i. e g t t u , )
ds ly b et 和 d sl yb e t ip a o jc 1 ipa o jc 2为 D s lyb e t 类对 象 的 碰撞 。 ip aO jc 子 三 、 圆形 检 测 b d . iT s (e m 1h t e t n w 如果我们 将近 似矩形的对象都认为是矩形对象 , 使用矩形 P i t(m . , m 1 y , 5 , m 2 n w o n b p1 x b p . ) 2 5 b d , e 检测碰撞 ,则我们 将近 似圆的对象使用圆形碰撞检测 。 圆形碰 P i t b p . , m 2 y , 5 ) o n (m 2 x b p . ) 2 5
四、基于像素级碰撞检 测 ( ) 一 当只需要检测 某一个对象和 某一个像 素点坐标 是否 碰撞 , 以使用 D s ly b e t对象的 h t e t o n 可 i p a0 j c iT sP i t 0方法 ,
例如 :
、
c r l. iT sP itp i t. ,p it ., t u) i ceh t et on (o n 1x on 1Y r e ,其 中 cr l ic e是一个 绘 制 了一个 圆 的 D s ly b et子类 对象 , on l ip aO j c p it 为坐标点 P it o n 类对象, , XY为坐标 p it 的横纵坐标 , on l 最后一 个参数设置为 tu re是为了检查对象的实际像素 ,而不是检测圆 的外接矩形边框区域像素。 这种方法 多用在检测 鼠标是否位于 ’
计 算机 光盘软 件 与应 用
工 程 技术
Cm u e D S f w r n p l t s o p tr C o ta e a d A p a n i i c o
2 1 第 5期 0 2年
Ac o Sr t.碰撞检测技术分析 t n ci 30 i p
刘 杰 .张锴
格式为 0 A R G B , xA RG B 从透明度、红 、绿 、蓝分量表现带有透 明
度 的颜 色 ,取值 为 O 0 0 0 0 x 0 0 0 0至 O f f f f 。整 体 功 能 :根 xffff 据 pc i 元件尺寸构造 B ta D t i m p a a实例 b d 。 m l 角 的坐 标 是 ( ly ) x , 1 ,宽 度 是 w , 高度 是 h ;对象 B 的 l 1 b d . r w p c / 调 用 B t a D t m 1d a (i ) / im p aa的 d a 法 将 元 件 r w方 R c a g e左上角的坐标是 (2 y ) etn l x ,2 ,宽度 是 w ,高度是 h 。 2 2 p c写入 B ta D t 象 。 i i m p a a对 只需要 比较 2个 R c a g e矩形 中心点在 x Y方 向的分量距 etn l , v r b p : im p n w B t a (m 1 :/ B t a D t a m lB t a= e im ph d ) / 将 im p a a 离,满足 数据写入位 图对 象 bp 。 ml X方 向: (l+w x 1/2 一 (2+w / ) I lw ) x 2 2 < (1+w ) 2 2 再使用同样方法绘制第二个 位图图像 。 .
在 开发基于 A t o S r p 3的 FA H cincit L S 游戏和 R A 用程序 I应 的过程 中,经常会用到碰撞检测技术,选用适当的碰撞检测 方 法是优化 F a h l s 游戏和 R A I 应用程序 中至关重要的环节 。 当前 , 网页游戏十分盛行 ,小巧的游 戏容量,精美 的游戏画面 ,吸引 着众多 的玩家 。 随着游戏 的规模越来越大 , 游戏玩家对游戏 的 精细程度要求越来越 高, 在满足用户对游戏效果要求 的同时难 免会 降低 网页游戏 的运行速度 , 尽管 A O E公 司的 F A H已经 DB LS 支持 了硬件 加速 等技 术来优化游戏和视频的运行, 是速度仍 但 然 是 F A H网页游 戏的一个瓶颈 , 影响游戏速度 的一个 重要 LS 而 因素就 是碰撞 检测的复杂度 。 A 3开发游戏及 R A应用程序常用的碰撞检测方法包括:地 S I 图网格检测 、矩形检测 、圆形检测 、像素级位 图检测四种方法。 地 图 网格 检 测 地 图网格检测是 比较粗糙 的矩形检测 , 固定尺寸 的矩形 将 作为一个整体单元进行处理 , 将整张地 图划分 为若干行列有序 的矩形 区域 , 在地 图上移动 的对象必须满足尺寸是矩形 网格 的 整数倍 ,每 次移 动至 少是矩 形网格 的整 数倍 ,这 样通 过检 测 2 个对象 的网格坐标 是否相邻 就可 以判 断是否发生碰撞 , 实现这 种碰撞 需要对 地图中出现的对象 内存储 自身的网格坐标 , 如 例 某对象 内部存储 了 自身的网格坐标为 ( , )代表第 3行第 2 32 个格 子, 该对象和 其它对象 发生碰撞仅需要检测另一个对 象的 坐标 是不是 ( , ) 3 3 、( , ) 4 2 3 1 、( , ) 2 2 、( , )即可 。这种方式常 运 用在移动对象尺寸较 固定 的简单游戏 中,例如俄罗斯方块 、 推箱子等 。 二 、矩 形 检 测 矩形 检测是最 常用 的检测 碰撞 ,实现矩形检测 可 以通过 D s ly b e t i p a O j c 对象 内的 R ca g e e t n l 对象 的位置进行判 断, 也 可 以直接调用 h t e tb e t (方法来实现 。 iT s0 jc ) ( ) 一 使用 D s l y b e t的 R c a g e 象来判 断碰撞 ip a O j c et n l 对 就是要检 测两个矩形是否重叠 。 设对 象 A的 R c a g e左上 假 e tn l