如何创建精灵无法通过的边界框
How do you create a bounding box that a sprite cannot pass through?
这是我使用的碰撞检测形式,它不允许玩家通过,但当它与瓦片碰撞时,它会同时预成型两个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
相关文章:
- std::当在256字节边界上写入整数时,流的奇怪行为
- 使用不变量来确定二分搜索中的边界条件
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- 在 64 位边界上对齐C++结构数组?
- OpenGL 着色器不绘制任何东西 - 糟糕的精灵类
- std::数组边界检查如何工作?
- CGAL:如何创建填充边界曲线的曲面网格?
- 在 c++ 中是否允许创建具有运行时边界的数组?
- 从精灵表在 sfml 中为精灵制作动画
- 是否可以跨 dll 边界返回常量引用/指向 std::vectors?
- C++11:16 字节原子<>变量是否在 16 字节边界上自动对齐,从而允许CMPXCHG16B指令?
- AABB 碰撞使实际精灵的大小翻倍
- 如何在精灵表上的两个不同部分之间来回切换,同时用户仍使用 SFML 持有密钥
- 转换引用对象的边界框?
- 我的精灵使用名为 ASGE 的C++框架卡在屏幕边缘
- 将迭代器作为 3 个元素的滑动窗口,可以超调边界(可能使用 Boost)
- 算法设计:用边界数字表示 2D 网格的最佳方式,以C++?
- 如何在cocos2d-x3测试版中围绕精灵绘制边界框
- 如何创建精灵无法通过的边界框
- 使用矢量和multimap的特定贴图和精灵之间的边界框碰撞