有了Sprite的麻烦,请在XNA中查看游戏中的鼠标

时间:2012-11-25 08:28:26

标签: c# mouse xna-4.0

我知道这个问题之前已经得到了解答,我完成了我的研究,相信我。 我现在要说这个,这是一个学校的项目,但考虑到我将进入游戏程序员,我想为自己的学习做这个。

这可能会变得混乱,但我会尽力而为 因此,它开始作为一个基本的射击,我们有一个 game.cs-包含所有纹理向量,而不是

entity.cs-已经开始用于玩家的spritebatch来调用player.draw(spritebatch) game.cs

player.cs-包含射击子弹和位置

bullet.cs

enemy.cs

所以我的问题是我有更新精灵的代码看鼠标然后我会用

player.Draw(
            playerTexture,
            position,
            null,
            Color.White,
            rotation,
            spriteOrigin,
            1.0f,SpriteEffects.None,0f);

在game.cs中绘制函数,但是当我这样做时,我得到了另一个精灵(与我的玩家精灵相同的精灵)看了我的鼠标,但我希望我的另一个看鼠标

但是我的专业。编写代码,以便在entity.cs中有一个已经开始的spritebatch

public CEntity(CGame myGame, Texture2D myTexture)
    {
        game = myGame;
        texture = myTexture;
    }

    /// <summary>
    /// Draws the player.
    /// </summary>
    /// <param name="begunSpriteBatch">Give this function a already begun SpriteBatch.</param>
    public void Draw(SpriteBatch begunSpriteBatch)
    {
        begunSpriteBatch.Draw(texture, position, Color.White);

    }

所以在game.cs中绘制函数player.draw被调用来绘制玩家,我该怎么做才能看到该精灵的鼠标效果?

public CPlayer(CGame game, Texture2D playerTexture)
        : base(game, playerTexture)
    {
        texture = playerTexture;
        brotation = rotation;



        position.X = 400f;
        position.Y = 400f;
    }

而且玩家也是从实体继承的。

按要求更新鼠标的代码

 IsMouseVisible = true;

        MouseState mouse = Mouse.GetState();
        distance.X = mouse.X - position.X;
        distance.Y = mouse.Y - position.Y;
        //Math.Atan2((double)mouseState.Y - position.Y, (double)mouseState.X - position.X); was using this //before found a different way

        rotation = (float)Math.Atan2(distance.Y, distance.X);

        spriteRectangle = new Rectangle((int)position.X, (int)position.Y,//rotation stuff
            playerTexture.Width, playerTexture.Height);
        spriteOrigin = new Vector2(spriteRectangle.Width / 2, spriteRectangle.Height / 2);

0 个答案:

没有答案