我在编写一个小2D游戏时遇到了一些问题。我目前正在研究一个函数,我想查找玩家角色是否与一个块碰撞,以及他碰撞的块的哪一侧。2D边界框碰撞
目前我有类似的信息(伪代码):
if(PLAYER_BOX IS WITHIN THE BLOCKS Y_RANGE)
{
if(PLAYER_BOX_RIGHT_SIDE >= BLOCK_LEFT_SIDE && PLAYER_BOX_RIGHT_SIDE <= BLOCK_RIGHT_SIDE)
{
return LEFT;
}
else if(PLAYER_LEFT_SIDE <= BLOCK_RIGHT_SIDE && PLAYER_LEFT_SIDE >= BLOCK_LEFT_SIDE)
{
return RIGHT;
}
}
else if(PLAYER_BOX IS WITHIN BLOCK X_RANGE)
{
if(PLAYER_BOTTOM_SIDE >= BLOCK_TOP_SIDE && PLAYER_BOTTOM_SIDE <= BLOCK_BOTTOM_SIDE)
{
return ABOVE;
}
else if(PLAYER_TOP_SIDE <= BLOCK_BOTTOM_SIDE && PLAYER_TOP_SIDE >= BLOCK_TOP_SIDE)
{
return BELOW;
}
}
难道我这里有一些逻辑错误?或者我只是在我的代码中写错了什么?
高于碰撞的作品,但它不应该认识到它应该时横向碰撞,有时它应该不应该。
这款游戏是SuperMario克隆版,所以它是一款双面打印2D平台游戏。
如果你能提供真实的代码,你的问题会更容易回答。请做。编辑:我认为PLAYER_BOX_RIGHT_SIDE从玩家的x坐标(玩家x +精灵宽度)正确偏移? – 2010-10-05 16:38:35
是的所有抵消都妥善处理。 – EClaesson 2010-10-05 16:48:52