开发日志5-24
Small gains bring great wealth.
........... * * *...................... * * *....................................
周一是新的一周的开始,愿这周能突破到服务器端,多人在线打架。
1) Correct Bugs:
实验:两个游戏人物,A-B的范围碰撞发生(T),但A-B的攻击碰撞没有发生(F);B-A的范围碰撞(T),B-A的攻击碰撞(F)。Bug出现的情况,非主控人物在对主控人物进行第一次攻击之后。
检测发现:主控人物的攻击框被检测到,但非主控人物的攻击框检测不到。
结果:本来开始我考虑的是,非主控人物和主控人物的数据搞混了,非主控人物的攻击框使用了主控人物的数据,因为主控人物此时处于休息状态,攻击框为零,所以会出现这种情况。
最后发现,这个Bug的出现,是由于一个边界检测漏掉了一个数字:
private static void CheckCollision(PlayerTemplate _data)
{
//检测碰撞集合
if (true)
{
if (_data.bumparea >= 2) //if (_data.bumparea > 2)
{
for (int i = _data.bumparea - 2; i < _data.bumparea + 2; i++)
{
foreach (Entity item in MenuScene.bumpEntities[i])
{
if (item.EntID != _data.owner.EntID)
{
Collision(item, _data);
}
}
}
}
else if (_data.bumparea == 1)
{
for (int i = _data.bumparea - 1; i < _data.bumparea + 2; i++)
{
foreach (Entity item in MenuScene.bumpEntities[i])
{
if (item.EntID != _data.owner.EntID)
{
Collision(item, _data);
}
}
}
}
else if (_data.bumparea == 0)
{
for (int i = _data.bumparea; i < _data.bumparea + 2; i++)
{
foreach (Entity item in MenuScene.bumpEntities[i])
{
if (item.EntID != _data.owner.EntID)
{
Collision(item, _data);
}
}
}
}
}
}
在这里少了一个“=”,那么造成处在2区域时(整个地图被纵向分割成若干块)就会不检测,于是出现了上述的Bug。其实上面的描述,是因为人物被攻击前处在第三块,被攻击后正好跌入了第二块,于是攻击不再起作用了。