我在編寫一個小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