首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

植物大战僵尸上面的保留球那关,保龄球和僵尸碰撞是如何实现的

2012-03-24 
植物大战僵尸上面的保留球那关,保龄球和僵尸碰撞是怎么实现的?我模拟这关自己用C语言做了个小游戏,做到碰

植物大战僵尸上面的保留球那关,保龄球和僵尸碰撞是怎么实现的?
我模拟这关自己用C语言做了个小游戏,做到碰撞这块,遇到了麻烦。
保龄球我用的一个链表,点击鼠标选中上面出的保龄球然后在草地上发出保龄球,链表加一个结点。
怪物也是用链表,用计时器,程序每跑一次,有一个全局变量加1,可以根据全局变量的值随意往怪物链表里面加怪物。
怪物和保龄球两个结构,里面存放坐标、种类等等一些常用属性。
然后用两个while(){while(){}} 嵌套来检测碰撞。
我碰撞用的算法是,
int count1,count2; //注:CO代表挂物,BOW代表保龄球。 x,y代表坐标 。w,h代表宽、高。
X轴:if(BOW.x < CO.x){ count1 = CO.x - (BOW.x + BOW.w)}else if(CO.x<BOW.x){count1 = BOW.x - (CO.x +CO.w)}else{count1 = -1}
Y轴:同X轴原理
if( count1<0 && count2<0){碰撞}

现在就是碰撞后斜向上或者斜向下运动的时候,在怪物密集的情况下,还没跑到上面一行就又碰到这行的怪物了。
怎么才能实现碰到这行怪物之后,碰撞下一行的怪物之前,不要再碰撞这行的怪物?

大家说说你们做游戏中遇到碰撞问题是怎么处理的?或者谁有更好的方法实现像这样的碰撞?我第一次做游戏,没经验,希望大家帮帮忙。在这小弟先说声谢谢了。

[解决办法]
加个布尔变量,击中怪物时禁止碰撞,直到换到下一行再解锁。每行只能判定一次。
[解决办法]

探讨
加个布尔变量,击中怪物时禁止碰撞,直到换到下一行再解锁。每行只能判定一次。

热点排行