【发布时间】:2015-08-28 14:14:22
【问题描述】:
我想达到什么目的?
我有一个 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;
}
}
问题
在我的情况下,有什么方法可以防止精灵穿过墙壁?
提前致谢。
【问题讨论】:
-
我认为你需要检查每个障碍物的鼠标位置,例如: if (offsetPosition.X
标签: xna mouse collision-detection