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