我知道这个问题之前已经得到了解答,我完成了我的研究,相信我。 我现在要说这个,这是一个学校的项目,但考虑到我将进入游戏程序员,我想为自己的学习做这个。
这可能会变得混乱,但我会尽力而为 因此,它开始作为一个基本的射击,我们有一个 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);