我的精灵没有画在屏幕上XNA

时间:2016-11-11 22:42:11

标签: c# xna draw

我在这里缺少什么

精灵等级

    private Texture2D m_tex;
    public Rectangle rect;
    private bool m_travellingRight;
    private int x_pos;

    //constructor
    public LightSaber(Texture2D tex, int xpos, int ypos)
    {
        m_tex = tex;
        rect = new Rectangle(xpos, ypos, m_tex.Width, m_tex.Height);
        m_travellingRight = true;
    }

    public void drawme(SpriteBatch sb)
    {
        if (m_travellingRight)
            sb.Draw(m_tex, rect, Color.White);
        else
            sb.Draw(m_tex, rect, null, Color.White, 0, Vector2.Zero, SpriteEffects.FlipHorizontally, 0);
    }

    public void updateme(GamePadState pad)
    {
        x_pos = rect.X;
        if (pad.ThumbSticks.Left.X < 0 && x_pos > 0)
        {
            m_travellingRight = false;
            rect.X -= 4;
        }
        else if (pad.ThumbSticks.Left.X > 0 && x_pos < 800 - rect.Width)
        {
            m_travellingRight = true;
            rect.X += 4;
        }
    }
}

}

的Game1:

LightSaber lightSaber;

lightSaber = new LightSaber(Content.Load<Texture2D>("Textures\\Lightsaber"), 300, 500);

lightSaber.drawme(spriteBatch);

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我错过了Game1.class中的很多代码,如果你错过任何东西,看看全班都会很高兴。

所以现在,我会给你一些提示:

  • 我没有在game1课程中看到任何spritebatch.begin()或spritebatch.End(),因为它已经缩短了,为了绘制任何内容,应该需要这些。

  • 您还可以尝试在绘制纹理时设置断点。并检查它是否确实吸引它,或者至少可以达到它。

  • 另一种可能性,它确实绘制精灵,但它的位置超出范围,(在游戏窗口外),我更喜欢把位置放在0,直到我确定它可以画出纹理

  • 另外,请注意您何时使用没有大括号的语句。因为没有它们,它只能在语句后读取一行代码。如果您在语句中添加新行或注释,那么您将获得意外行为。 (我之前犯过这个错误。)

现在就是这样,希望这会有所帮助