PacMan开发-碰撞检测实现
2015-04-15 19:06
176 查看
在游戏如何让程序知道物体在撞墙?
可通过无题所在点的位置和墙体边缘的位置进行检测。
计算方法是:用中心坐标和朝向所对应的墙的位置与物体的宽度进行比较,若是大于宽度,则没有碰上。
将地图分为若干个小的正方形格子,物体到每一个格子后进行碰撞检测。
碰撞检测函数是在"GObject.h"的Collision()函数中,这是一个bool型函数。
@ Mayuko
可通过无题所在点的位置和墙体边缘的位置进行检测。
计算方法是:用中心坐标和朝向所对应的墙的位置与物体的宽度进行比较,若是大于宽度,则没有碰上。
将地图分为若干个小的正方形格子,物体到每一个格子后进行碰撞检测。
碰撞检测函数是在"GObject.h"的Collision()函数中,这是一个bool型函数。
bool GObject::Collision() { bool b = false; AchiveCtrl();//更新行列的数据 if (dArray<0 || dRow<0 || dArray>MAPLENTH || dRow>MAPLENTH) { b = true; } else if (Achive()) { switch (twCommand) { case LEFT: if (dArray > 0 && !pStage->mapData[dRow][dArray - 1]) { b = true; } break; case RIGHT: if (dArray < MAPLENTH - 1 && !pStage->mapData[dRow][dArray + 1]) { b = true; } break; case UP: if (dRow>0 && !pStage->mapData[dRow - 1][dArray]) { b = true; } break; case DOWN: if (dRow < MAPLENTH - 1 && !pStage->mapData[dRow + 1][dArray]) { b = true; } break; } if (!b) { tw = twCommand;//没撞墙,指令成功 } } mX = point.x; mY = point.y; int MAX = pStage->LD*MAPLENTH + pStage->LD / 2; int MIN = pStage->LD / 2; switch (tw) { case LEFT: if (dArray > 0 && !pStage->mapData[dRow][dArray - 1]) { b = true;//撞墙了 break; } if (point.x < MIN) { point.x = MAX; } point.x -= speed; break; case RIGHT: if (dArray < MAPLENTH - 1 && !pStage->mapData[dRow][dArray + 1]) { b = true;//撞墙了 break; } point.x += speed; if (point.x >MAX) { point.x = MIN; } break; case UP: if (dRow>0 && !pStage->mapData[dRow - 1][dArray]) { b = true;//撞墙了 break; } if (point.y < MIN) { point.y = MAX; } point.y -= speed; break; case DOWN: if (dRow < MAPLENTH - 1 && !pStage->mapData[dRow + 1][dArray]) { b = true; break; } point.y += speed; if (point.y >MAX) { point.y = MIN; } break; } return b; }
@ Mayuko
相关文章推荐
- PacMan开发-碰撞检测实现
- Cocos2d-x 3.2 lua飞机大战开发实例(二)敌机类的封装,以及碰撞检测的实现
- Android游戏开发之检测游戏碰撞的原理实现(九)
- Android游戏开发之检测游戏碰撞的原理实现
- (转)Android游戏开发之检测游戏碰撞的原理实现(九)
- Android游戏开发之检测游戏碰撞的原理实现(四)
- [cocos2d-x][游戏开发]通过cocos2d-x实现简易飞机大战 08.游戏界面 碰撞检测
- Android游戏开发之检测游戏碰撞的原理实现(九)
- Android游戏开发之检测游戏碰撞的原理实现(九)
- php中实现矩阵的碰撞检测
- iOS实现浮动泡泡功能,悬浮泡泡,windows系统屏幕保护程序的气泡功能(碰撞检测)
- 游戏开发中的数学和物理算法(6):圆和球的碰撞检测
- 【amazing cocos2d-x 3.0之十七】使用新物理引擎实现碰撞检测
- Cocos2d-x碰撞检测原理与英雄要打死怪物--之游戏开发《赵云要格斗》(7)
- [Unity3D]在Unity3D中实现简单的碰撞检测
- android 3D 游戏实现之简单碰撞检测
- HTML5 Canvas 碰撞检测的简单实现
- cocos2dx碰撞检测实现
- js实现碰撞检测特效代码分享
- Java简单游戏开发之碰撞检测