如何"演员"一个东西

时间:2015-02-14 05:25:04

标签: c# arrays object xna

我有一个接收对象数组的函数。

我还有一个名为Rectangle的类,但是当我迭代对象数组时,我需要将该索引中的Object作为Rectangle而不是作为对象,因为我将使用的函数需要参数类型矩形:

    //For collision handling - Receives one rectangle
    public bool IsColliding(Rectangle collisionRectangle)
    {
        return this.destinationRect.Intersects(collisionRectangle);
    }

    //Overloading - Receives an array with multiple Rectangles
    public bool IsColliding(Object[] collisionRectangles)
    {
        for(int i = 0; i <= collisionRectangles.Length; i++)
        {
            //CODE WILL FAIL HERE - The method "Intersects" requires and object of type Rectangle
            if(this.destinationRect.Intersects((Rectangle)collisionRectangles[i]))
            {
                return true;
            }
        }
        return false;
    }

编辑1:

在将数组传递给函数之前声明数组:

Object[] buildingCollitionRectangles =
        {
            new Rectangle[144, 16, 96, 32],
            new Rectangle[144, 48, 96, 64]
        };

尝试使用这样的方法:

if(!player.IsColliding(buildingCollitionRectangles))
{
    updatePlayerInput();
}

编辑2:

尝试将矩形存储在Rectangle []数组中: enter image description here

2 个答案:

答案 0 :(得分:2)

好吧,我认为我们找到了它 - 你使用方括号而不是Rectangle构造函数的括号。我认为你实际上正在分配两个巨大的Rectangle对象的多维数组。 https://msdn.microsoft.com/en-us/library/microsoft.xna.framework.rectangle.rectangle.aspx肯定会显示你需要括号。

试试这个:

Rectangle[] buildingCollitionRectangles =
        {
            new Rectangle(144, 16, 96, 32),
            new Rectangle(144, 48, 96, 64)
        };

(请注意,我认为这也应解决无法使用Rectangle[]数组的问题)

答案 1 :(得分:1)

为什么不使用Rectangle []作为参数的类型?