1

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

这可能会变得一团糟,但我会尽力而为,所以它从一个基本的射击游戏开始,我们有一个 game.cs- 包含所有纹理向量,以及

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

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

子弹头文件

敌人.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);
4

0 回答 0