几何碰撞检测

问题描述 投票:0回答:1

我在代码的特定区域遇到问题。我正在尝试在按钮上创建一个矩形,当光标在矩形内时,按钮将变为红色。

private bool rectangleContainsPoint(
        Vector2 rectanglePos, 
        Texture2D rectangleImage, 
        Point targetPoint)
    {

        Rectangle rect = new Rectangle((int)rectanglePos.X, (int)rectanglePos.Y,
                                        rectangleImage.Width, rectangleImage.Height);

        if (targetPoint.X < rect.X)
        {
            return false;
        }
        else if (targetPoint.Y < rect.Y)
        {
            return false;
        }
        else if (targetPoint.X > rectangleImage.Width)
        {
            return false;
        }
        else if (targetPoint.Y > rectangleImage.Height)
        {
            return false;
        }

        else
            return true;
    }

看了十几次后,我看不出为什么这不起作用。

c# collision detection bounds
1个回答
0
投票

您应该将宽度添加到X,将高度添加到Y.

else if (targetPoint.X > rect.X + rectangleImage.Width )
        {
            return false;
        }
        else if (targetPoint.Y > rect.Y + rectangleImage.Height)
        {
            return false;
        }
© www.soinside.com 2019 - 2024. All rights reserved.