書いている小さな2Dゲームで衝突に問題があります。私は現在、プレイヤーキャラクターがブロックと衝突したかどうか、およびブロックのどちら側と衝突したかを調べたい関数に取り組んでいます。
現在、私は(psuedo-code)のようなものを持っています:
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;
}
}
ここに論理エラーがありますか?または、コードに何か間違ったことを書いただけですか?
ABOVEコリジョンは機能しますが、横方向のコリジョンを認識すべき場合は認識しません。また、そうでない場合も認識します。
ゲームはスーパーマリオのクローンなので、横スクロールの2Dプラットフォーマーです。