j2me算法:J2ME中的基础碰撞检测算法

  在游戏中经常需要进行碰撞检测实现例如判断前面是否有障碍以及判断子弹是否击中飞机都是检测两个物体是否发生碰撞然后根据检测结果做出区别处理

  进行碰撞检测物体可能有些形状和复杂这些需要进行组合碰撞检测就是将复杂物体处理成基本形状组合然后分别进行区别检测

  下面简单介绍下两种最基本形状进行碰撞时候进行处理

  1、矩形和矩形进行碰撞

  般规则物体碰撞都可以处理成矩形碰撞实现原理就是检测两个矩形是否重叠我们假设矩形1参数是:左上角坐标是(x1,y1)宽度是w1高度是h1;矩形2参数是:左上角坐标是(x2,y2)宽度是w2高度是h2

  在检测时数学上可以处理成比较中心点坐标在x和y方向上距离和宽度关系即两个矩形中心点在x方向距离绝对值小于等于矩形宽度和 2分的同时y方向距离绝对值小于等于矩形高度和 2分的下面是数学表达式:

  x方向:| (x1 + w1 / 2) – (x2 + w2/2) | < |(w1 + w2) / 2|

  y方向:| (y1 + h1 / 2) – (y2 + h2/2) | < |(h1 + h2) / 2|

  在只需要将上面条件转换成代码就可以实现了

  但是矩形碰撞只是种比较粗糙碰撞检测思路方法很多实际物体可能不是个规则矩形

  下面介绍下圆形碰撞

  2、圆形和圆形碰撞

  圆形和圆形碰撞应该说是种最简单碰撞在数学上对于两个圆形是否发生重叠有计算两个圆心的间距离公式那么条件就变为:计算两个圆心的间距离是否小于两个圆半径和

  假设圆形1左上角坐标是(x1,y1)半径是r1圆形2左上角坐标是(x2,y2)半径是r2

  MIDP1.0中没有浮点数而且浮点数运算比较慢所以我们将条件做个简单变换:对于条件两边都进行平方这样就去掉了开方运算步骤

  下面是数学表达式:

  (x1 – x2)2 + (y1 – y2)2 < (r1 + r2)2

  在只需要将上面条件转换成代码就可以了

  上面介绍只是最基本碰撞检测算法实现而实际编程过程中遇到碰撞检测问题要比这些复杂很多还需要其他形式检测还需要进行更加深入学习

Tags:  j2me基础教程 边缘检测算法 j2me怪物寻路算法 j2me算法

延伸阅读

最新评论

发表评论