无法从派生类访问我的基类中的变量

时间:2012-11-17 13:05:14

标签: c# inheritance xna

我正在为使用XNA的项目开发一个迷你游戏,我有一个名为“Sprite.cs”的基类,它包含一个位置向量(public Vector2 m_vPosition;)。然后我有一个名为“Player.cs”的派生类。我编写了一个碰撞检测类,其中一个函数接收2个精灵对象(其中gameObject也是从Sprite.cs派生的)并使用intersect函数返回一个真或假的答案。

问题在于,当我单步执行代码时,一旦它跳转到碰撞检测功能,它就会显示我的播放器的位置是它在加载时设置的位置,并且不会随着我移动玩家而改变屏幕即使在此功能之外,它也表明位置矢量工作正常。

我相信我的问题是当我将播放器对象传递给函数时,它无法访问基类(Sprite.cs)变量。以下是一些代码段。

Sprite.cs

public Vector2 m_vPosition;
public Rectangle m_rBoundingBox;

...

m_rBoundingBox = new Rectangle(
    (int)m_vPosition.X, 
    (int)m_vPosition.Y, 
    (int)(m_fWidth * m_fScale),
    (int)(m_fHeight * m_fScale));

Game1.cs

Player playerSprite;
playerSprite = new Player(); //where player is a child of sprite

...

if ((Collision.BoxtoBoxCollision(playerSprite, gameObject)))
            {
                playerSprite.m_vPosition = new Vector2(100, 100);
               //just testing to see if collision works, not collision logic.
            }

collision.cs

public bool BoxtoBoxCollision(Sprite objectOne, Sprite objectTwo)
    {
        if (objectOne.m_rBoundingBox.Intersects(objectTwo.m_rBoundingBox))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

所以我的问题是当我在playerSprite传递给碰撞函数时查看位置向量时,它从第一次加载时起没有变化。

如果您需要更多信息,我很乐意提供更多信息。

提前致谢。

0 个答案:

没有答案