对于那些比我自己(数学)有更多经验的人,我有一个XNA问题。XNA,C# - 检查一个Vector2路径是否跨越另一个Vector2路径
背景:我有一个实现边界类的游戏,它只包含2个Vector2对象,一个起点和一个终点。目前的实现粗略地处理碰撞检测,通过假设边界总是垂直或水平,即如果start.x和end.x是相同的检查,我不想通过x等。
理想情况下,我想实现的是一种接受两个Vector2参数的方法。第一个是当前位置,第二个是请求的位置(我想将其移至不反对的位置)。该方法也会接受边界对象。那么该做的方法就是告诉我,如果我要跨越这一行动的边界。这可能是一个布尔或理想的东西代表我可以移动多远。
这个空白的方法可能比我能说得更好。
/// <summary>
/// Checks the move.
/// </summary>
/// <param name="current">The current.</param>
/// <param name="requested">The requested.</param>
/// <param name="boundry">The boundry.</param>
/// <returns></returns>
public bool CheckMove(Vector2 current, Vector2 requested, Boundry boundry)
{
//return a bool that indicated if the suggested move will cross the boundry.
return true;
}
这是“边界”矩形,线条,线段还是其他? – 2010-12-21 22:39:09
嗨,约翰,边界是一条线(ops!刚注意到我可怕的拼写)。为了说明问题,解决这个问题的简单方法是将每个Vector2作为边界存储在一个集合中,然后当对象正在移动时检查所述集合以确保我们没有在该集合中找到Vector2。然而,这对于级别开发来说是一个真正的痛苦,而且在旧的处理时间上相当昂贵。因此,由于几乎每一个边界都是一条直线,所以只存储起始和结束vector2对象并且在飞行中以数学方式计算它是否已被击中/穿过是有意义的。希望这有助于 – Nick 2010-12-22 08:23:05