0

ソースに問題があるRectangleため、テクスチャが画面に表示されません。ソースを null として Draw メソッドを使用すると、テクスチャが機能します。

これの何が問題なのかわかりません。

また、これをコンストラクターに入れると: source=new Rectangle((int)position.x,(int)position.Y, texture.Width/frameas, texture.Height). エラーが発生します

新しいキーワードを使用してオブジェクトを作成する」

テクスチャの読み込み、更新、および描画のみを行うため、Game1 にエラーはありません。

public class Player
{
    public Texture2D texture;
    public Vector2 position;
    public int speed, width,frames, jump;
    public float scale;
    public Vector2 velocity;
    public float gravity;
    public bool hasJumped;
    public Rectangle source;



    public Player(int x, int y)
    {
        speed = 5;
        position.X = x;
        position.Y = y;
        scale = 1.8f;
        frames = 4;
        source = new Rectangle(x,y, 30,30);


    }

    public void LoadContent(ContentManager Content)
    {
        texture = Content.Load<Texture2D>("player");
    }
    public void Update(GameTime gameTime)
    {
        position += velocity;
        KeyboardState keyState = Keyboard.GetState();
        if (keyState.IsKeyDown(Keys.D))
        {
            velocity.X = 3f;
        }
        if (keyState.IsKeyDown(Keys.A))
        {
            velocity.X = -3f;
        }
        if (keyState.IsKeyDown(Keys.Space) && hasJumped==false)
        {
            position.Y -= 10f;
            velocity.Y = -5f;
            hasJumped = true;
        }
        if (hasJumped == true)
            velocity.Y += 0.15f;
        else
            velocity.Y = 0f;
    }
    public void Draw(SpriteBatch spriteBatch)
    {
        spriteBatch.Draw(texture, position, source, Color.White, 0f, Vector2.Zero, scale, SpriteEffects.None, 0f);
    }
}
}
4

1 に答える 1

1

textureまだ存在しないため、コンストラクター内で参照できません。でテクスチャをロードするまで実際の値に設定されないLoadContent()ため、それを使用して長方形を作成しようとすると、 がスローされますNullReferenceException

次の行の後にソースの四角形を作成します。

texture = Content.Load<Texture2D>("player");
于 2013-02-26T14:39:55.490 に答える