我目前遇到了一个问题,就是在使用边界框时无法让精灵呈现实心。下面的代码用于处理碰撞,可以正常工作。
“Position”是主角在地图上的位置,“character2”是一类18 x 28像素的精灵,主角会与它发生碰撞。
当主角与“character2”精灵碰撞时,我尝试调整位置(例如:Position.X -=1;),但这只会将我的主要精灵向后滑动,直到不再相交。
我觉得这可能是非常简单的事情,但就是无论如何我都无法想出正确的方法。
总结我的问题:我该如何让“character2”精灵在碰撞时呈现实心?
另外,即使我的主要精灵在碰撞时停止(通过减速至0),它也会被卡住,if语句进入无限循环。
float x1 = Position.X;
float y1 = Position.Y;
float x2 = x1 + character2.Width;
float y2 = y1 + character2.Height;
BoundingBox b1 = new BoundingBox(new Vector3(x1, y1, 0),
new Vector3(x2, y2, 0));
BoundingBox b2 = new BoundingBox(new Vector3(Position2.X, Position2.Y, 0),
new Vector3(x2, y2, 0));
if (Collision(b1, b2))
{
// ????
}