Android游戏开发---碰撞检测
虽然碰撞检测不一定要自己去写,一些游戏引擎直接就提供了相关的方法。但是掌握了碰撞检测的基本方法,还是想当有用的。
2D游戏中碰撞一般是矩形的碰撞,但是一般会有一些误差,因为边缘可能是透明的。
以下介绍3种碰撞检测的方法:1. 圆的碰撞检测碰撞条件:两个圆心的距离 < 两圆半径和 则碰撞
2. 矩形的碰撞检测方法1碰撞条件:x抽距离差 < 两矩形宽度之和 / 2y抽距离差 < 两矩形高度之和 / 2
3. 矩形的碰撞检测方法2
碰撞条件:
s表示起点,e表示终点。需要知道矩形的两点。
一般在实际中第二种与第三种任选一种即可。
第一种 “ 圆的碰撞检测 ” 代码:
第二种 “ 矩形的碰撞检测1 ” 代码:(核心部分)
第三种 “ 矩形的碰撞检测 2” 代码:private void drawView(){try{if (holder != null){//drawcanvas = holder.lockCanvas();canvas.drawColor(Color.BLACK);paint.setColor(Color.BLUE);canvas.setDrawFilter(new PaintFlagsDrawFilter(0,Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG));//矩形的碰撞 (碰撞后动的矩形禁止)//s(150,151), e(220,221)canvas.drawRect(150, 151, 220, 221, paint);//当没有碰撞时才自增移动(取反)if (220 <= cx || 221 <= cy || 150 >= (cx + 60)|| 151 >= (cy + 60)){cx += 5;cy += 5;}canvas.drawRect(cx, cy, cx + 60, cy + 60, paint);//动的矩形(都在对角线上运动)}} catch (Exception e){e.printStackTrace();} finally{if (canvas != null)holder.unlockCanvasAndPost(canvas);}}
原创文章,转载请注明出处:http://blog.csdn.net/xn4545945