醒着☆☆

H5 Laya Native Game

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

众所周之flash里通过hitTest()来检测碰撞

例子:如果检测a是否与b碰撞 如图:

 

 

Code

这样就完成了 hitTest()的碰撞演示

hitTest()方法存在很多限制。应用很单一。

比如,当可以拖拽的物体需要与很多排列很紧密的目标检测的时候

就会束手无策了。如图:

当把a拖到球的中间位置,hitTest()会认为是与四个球都碰到了

这恰恰不是我们想看到的结果;

解决的方法就是计算坐标之间的距离来判断

 

Code

 

另外:在flash里,hitTest()并不是我们看到的区域碰到一起就认为碰到。

flash里的hitTest()认为原件(影片剪辑)的左极点到右极点之间的区域,和顶极点与底极点之间的区域

即一个 矩形的区域,不管原件本身是什么形状。

看到这个区域很简单,就是把原件(什么形状的都可以)拖到舞台后,

点击这个原件后,出现了矩形区域。

这就会造成视觉上,没有碰到,但是已经有了交叉区域,

hitTest()认为碰到了。

所以就又不得不通过 检查坐标的接近程度来进行判断。

如果两个物体的原点坐标距离,小于他们的宽度(高度)一半

就认为是碰到

 

hitTest()测试    源文件下载

坐标检测例子     源文件下载   

  

 

naiking

我在醒着

posted on 2008-08-27 19:36  醒着/☆☆  阅读(523)  评论(1编辑  收藏  举报