【问题标题】:How do you create a bounding box that a sprite cannot pass through?你如何创建一个精灵不能通过的边界框?
【发布时间】:2016-04-12 11:53:07
【问题描述】:

这是我使用的碰撞检测形式,它不允许玩家通过,但当它与瓷砖碰撞时,它会同时执行两个 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
}

【问题讨论】:

    标签: c++ collision-detection bounding-box


    【解决方案1】:

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

     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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 2013-07-31
      相关资源
      最近更新 更多