获取对其他类变量的访问权限

时间:2013-07-26 13:57:44

标签: c# class variables xna get

我正在进行一场乒乓球比赛,因为我是编程的新手,我不知道如何获得另一个类变量。我有单独的课程,绿色和蓝色的拨片,一个球和game1.cs。

我用bool movingUp,movingLeft;

控制球的移动

它从屏幕边框反弹,但我不知道如何使它与拨片一起工作。基本上,我如何检查球拍的位置,当球接触球拍时,它会反弹?我的意思是,如何检测碰撞?

public class Ball
{
    ParticleEngine particleEngine;
    GraphicsDeviceManager graphics;
    Texture2D texture;
    Vector2 position;
    Boolean movingUp, movingLeft;
    Vector2 origin;

    public Ball()
    {
        position = new Vector2(800 / 2, 330);
    }

    public void LoadContent(ContentManager Content)
    {
        texture = Content.Load<Texture2D>("ball");
        movingLeft = true;
        //Particle Engine
        List<Texture2D> textures = new List<Texture2D>();
        textures.Add(Content.Load<Texture2D>("pixel"));
        particleEngine = new ParticleEngine(textures, new Vector2(400, 240));
    }

    public void Update(GameTime gameTime)
    {
        float speed = 2.5f;

        //Physics
        if (movingUp)
        {
            position.Y -= 3;
        }

        if (movingLeft)
        {
            position.X -= 3;
        }

        if (!movingUp)
        {
            position.Y += 3;
        }

        if (!movingLeft)
        {
            position.X += 3;
        }

        if (position.X <= 0 && movingLeft) movingLeft = false;
        if (position.Y <= 85 && movingUp) movingUp = false;

        if (position.X >= 800 - texture.Width && !movingLeft) movingLeft = true;
        if (position.Y >= 500 - texture.Height && !movingUp) movingUp = true;

        origin = new Vector2(position.X + texture.Width / 2, position.Y + texture.Height / 2);

        //Particles
        particleEngine.EmitterLocation = new Vector2(origin.X, origin.Y);
        particleEngine.Update();
    }

    public void Draw(SpriteBatch spriteBatch)
    {
        particleEngine.Draw(spriteBatch);
        spriteBatch.Draw(texture, position, Color.White);
    }

}

其中一个paddle类(它们看起来同样代表名称和移动键):

public class GreenPaddle
{
    Texture2D texture;
    Vector2 position;
    float speed = 2f;
    public GreenPaddle()
    {
       position = new Vector2(10, 230);
    }
    public void LoadContent(ContentManager Content)
    {
        texture = Content.Load<Texture2D>("greenpaddle");
    }
    public void Update(GameTime gameTime)
    {
        KeyboardState keyState = Keyboard.GetState();
        //Check If Keys Are Pressed // Movement
        if (keyState.IsKeyDown(Keys.W))
            position.Y -= speed;
        if (keyState.IsKeyDown(Keys.S))
            position.Y += speed;
        //Check Border
        if (position.Y < 87)
        {
            position.Y = 87;
        }
        if (position.Y > 396)
        {
            position.Y = 396;
        }
     }
     public void Draw(SpriteBatch spriteBatch)
     {
        spriteBatch.Draw(texture, position, Color.White);
     }
}

先谢谢,我真的希望学到这样的东西:D

1 个答案:

答案 0 :(得分:2)

将要访问的变量声明为public,或者创建get方法。

对于公共变量,您可以这样做:

public Vector2 Position;

要访问它,您可以致电:

Ball ball;
ball.Position

对于get方法实现:

public Vector2 getPosition()
{
    return Position;
}

你会用这种方法来获得这个位置。