Math 检测矩形上具有已知大小和位置的碰撞

Math 检测矩形上具有已知大小和位置的碰撞,math,collision,game-development,Math,Collision,Game Development,我想检测两个矩形之间的碰撞,我知道它们的大小和位置。我在我的“brick”类中尝试了这个c#代码,该类使用播放器的中心和砖块作为参考: public bool IsTouchingPlayer(Player player) { return (player.xPos > xPos - (width / 2) && player.xPos < xPos + (width / 2)) && (player.yPos > yPos -

我想检测两个矩形之间的碰撞,我知道它们的大小和位置。我在我的“brick”类中尝试了这个c#代码,该类使用播放器的中心和砖块作为参考:

public bool IsTouchingPlayer(Player player) 
{
    return (player.xPos > xPos - (width / 2) && player.xPos < xPos + (width / 2)) &&
    (player.yPos > yPos - (height / 2) && player.yPos < yPos + (height / 2));
}
public bool IsTouchingPlayer(播放器)
{
返回(player.xPos>xPos-(宽度/2)和&player.xPosyPos-(高度/2)和&player.yPos
但可悲的是,这只能解释玩家与砖块碰撞的中心;我认为可以肯定地说这是一个问题


如果您需要更多信息,请告诉我。

您没有考虑玩家的点击框大小。您的播放器xPos是一个单点。如果您想要播放器的大小,则需要考虑包含播放器的“矩形”或“多边形”,并检查是否有任何碰撞空间重叠,有时更容易检查“不接触”并将其否定。不接触是件容易的事:在上面、右边、左边或下面。@RobertMennell是的,当然。我只是不知道该怎么做。你只需要检查玩家的击盒的任何一个顶点是否在砖块的击盒内。@RobertMennell我相信你的解决方案是对移动速度进行假设的。如果以两个矩形的相对速度接近其大小,则可以发生碰撞,而其中一个长方体的任何顶点都不在另一个长方体内(如果完全重叠)。