Monogame - 雪碧 class

Monogame - Sprite class

我有一个包含角色行走循环的精灵 sheet,并且我制作了一个玩家 class 允许玩家移动并循环行走动画,但是动画只有效向右 行走时 。我使用箭头键上下左右移动,意思是当我按下任意键时,我的播放器向正确的方向移动,但只执行向右行走的动画。

当前有效的动画已在 LoadContent() 函数中这样调用:

spritesheet = Content.Load<Texture2D>("sprites2");

player = new Player(spritesheet, new Rectangle(0, 96, 32, 48), 
new Vector2(100, 100), 4);

这就完成了它的工作,因为它调用每 4 个精灵来完成向右行走的动画,new Rectangle(0,96,32,48) 是从精灵 sheet 中切出的位置。但是,我还需要(例如)使用 new Rectangle(30, 101, 65, 52),这将在按下 left 箭头键时正确地为我的角色设置动画。

我的问题是,如何加载精灵 sheet 的另一个位置,然后在我按下正确的键时实际工作?

这是一个很难问的问题,如果难以理解,我深表歉意。接受对我的问题的所有修改,在此先感谢您。

我认为更好的方法是将整个 sprite sheet(或包含玩家 sprite 的整个 sprite sheet 部分)传递给 Player class 并有一个单独的动画 class 处理如何 select 来自 sheet 的矩形。如果你有所有相同尺寸的框架,这会更容易,但如果你不这样做也是可行的。

在动画class中,你可以为每个动画设置一个List<Rectangle>MoveUp, MoveDown, MoveLeft, MoveRight,等等,然后从你的[=]中调用一个方法PlayAnimation() 10=] class 每当您的玩家执行其中一项操作时。

如果您需要每个帧包含更多信息,而不仅仅是要显示的 Rectangle(例如,如果帧有不同的时间),您可以创建一个帧 class 来保存该信息。