XNA 3.1 - 不确定如何在敌人类中添加Rectangle

时间:2013-11-04 01:22:09

标签: c# xna xna-3.0

尝试在这里制作2D侧卷轴

我对编程很陌生。我试着按照指南和教程,运气不好。我知道这很简单,但我无法理解。

我为游戏中的所有不同角色提供了多个班级。

我有一个矩形用于玩家将控制的主精灵角色。

但问题是我想在敌人的精灵周围添加矩形,以便我可以在游戏中添加碰撞。

public class enemyRocks
{
    public Texture2D texture;
    public Vector2 position;
    public Vector2 velocity;
    public Rectangle rockRectangle; 

    public bool isVisible = true;

    Random random = new Random();
    int randX;

    public enemyRocks(Texture2D newTexture, Vector2 newPosition)
    {
        texture = newTexture;
        position = newPosition;


        randX = -5;
        velocity = new Vector2(randX, 0);

    }


    public void Update(GraphicsDevice graphics) 
    {
        position += velocity;

        if (position.X < 0 - texture.Width)
            isVisible = false;

    }

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

我真的尝试了很多方法,但它似乎没有用。

到目前为止我所做的一切都给了我一个“nullreferenceexception未处理”的错误。

我会接受任何需要改进的批评。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你的sprite上需要boundingBox属性

new Rectangle((int)Position.X,(int)Position.Y,texture.Width, texture.Height);

然后检查碰撞

if (Sprite1.BoundingBox.Intersects(Sprite2.BoundingBox))

但请确保在使用纹理的任何函数之前加载纹理。我猜您的错误发生在更新功能上,您尝试获取未加载的纹理宽度。