我想实现什么?如何防止“鼠标对象”移动throgh矩形?
我有一个应该随鼠标位置移动的Sprite(有点像光标)。在我的情况下,虽然我也有其他纹理(障碍级)。所以如果鼠标与这样一个障碍碰撞,我希望纹理停止朝那个方向移动。
什么问题?
虽然纹理确实遵循鼠标,并且在鼠标与障碍物“碰撞”时也会停止,但在某些时刻,光标不再位于边界矩形内,而是位于墙的另一侧。结果,纹理的位置被更新为鼠标位置,它突然出现在墙后面,这不是所需的行为。
我的碰撞法。
private void CheckCollision(List<Obstacle> _obstacleList, MouseState mState)
{
int xOffset = oldMouseState.X - mState.X;
int yOffset = oldMouseState.Y - mState.Y;
Vector2 offsetPosition = new Vector2(oldMouseState.X + xOffset,oldMouseState.Y + yOffset);
bool collides = false;
foreach (Obstacle obstacle in _obstacleList)
{
if (obstacle.BoundRectangle.Contains(offsetPosition))
{
collides = true;
}
}
if (!collides)
{
position = offsetPosition;
}
}
问题
什么是防止穿墙在我的情况下,以移动精灵的方法吗?
在此先感谢。
我认为你需要检查鼠标位置对每个障碍物如:(offsetPosition.X
user3256944