【问题标题】:Getting Acces to Other Classes Variables访问其他类变量
【发布时间】:2013-07-26 13:57:44
【问题描述】:

我正在开发一个乒乓球游戏,因为我是编程新手,所以我不知道如何访问另一个类变量。我有单独的班级,绿色和蓝色的桨、一个球和 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

【问题讨论】:

    标签: c# class variables xna get


    【解决方案1】:

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

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

    public Vector2 Position;
    

    要访问它,您可以调用:

    Ball ball;
    ball.Position
    

    get方法实现:

    public Vector2 getPosition()
    {
        return Position;
    }
    

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

    【讨论】:

    • 谢谢你,我很高兴你没有发布固定代码,因为现在我知道如何自己做了,非常感谢:D
    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多