如何创建精灵无法通过的边界框

How do you create a bounding box that a sprite cannot pass through?

本文关键字:边界 精灵 何创建 创建      更新时间:2023-10-16

这是我使用的碰撞检测形式,它不允许玩家通过,但当它与瓦片碰撞时,它会同时预成型两个if语句。

  if (_mainCharac->position->X < (_mainCrate->posRect->X + _mainCrate->sourceRect->Width) && 
    (_mainCharac->position->X + _mainCharac->sourceRect->Width) > _mainCrate->posRect->X && 
    _mainCharac->position->Y < (_mainCrate->posRect->Y + _mainCrate->sourceRect->Height) &&
    _mainCharac->sourceRect->Height + _mainCharac->position->Y > _mainCrate->posRect->Y)
{
    if (_mainCharac->position->X > _mainCrate->posRect->X)
        _mainCharac->position->X = _mainCharac->position->X + 2;//Right
    if (_mainCharac->position->Y < _mainCrate->posRect->Y)
        _mainCharac->position->Y = _mainCharac->position->Y - 2;//Top
    if (_mainCharac->position->X < _mainCrate->posRect->X)
        _mainCharac->position->X = _mainCharac->position->X - 2;//Left
    if (_mainCharac->position->Y > _mainCrate->posRect->Y)
        _mainCharac->position->Y = _mainCharac->position->Y + 2;//Bottom
}

我认为你的检测很好,但我会做这样的调整:

 if (_mainCharac->position->X > _mainCrate->posRect->X + _mainCrate->sourceRect->Width/2)
      _mainCharac->position->X = _mainCharac->position->X + 2;//Right
 else
      _mainCharac->position->X = _mainCharac->position->X - 2;//Left
 if (_mainCharac->position->Y < _mainCrate->posRect->Y + _mainCrate->sourceRect->Height/2)
      _mainCharac->position->Y = _mainCharac->position->Y - 2;//Top
 else
      _mainCharac->position->Y = _mainCharac->position->Y + 2;//Bottom