2

我正在做一个乒乓球游戏,因为我是编程新手,我不知道如何访问另一个类变量。我有单独的课程,绿色和蓝色的桨、一个球和 game1.cs。

我用 boolmovingUp、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);
    }

}

桨类之一(除了名称和移动键外,它们看起来相同):

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

4

1 回答 1

2

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

对于公共变量,你会这样做:

public Vector2 Position;

要访问它,您可以调用:

Ball ball;
ball.Position

对于get方法实现:

public Vector2 getPosition()
{
    return Position;
}

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

于 2013-07-26T14:13:45.597 回答