【问题标题】:Monogame - Sprite classMonogame - Sprite 类
【发布时间】:2016-04-16 21:01:20
【问题描述】:

我有一个包含角色行走循环的精灵表,并且我制作了一个玩家类,允许玩家在行走动画中移动和循环,但是动画仅在 向右行走时起作用强>。我使用箭头键上下左右移动,这意味着当我按下任意键时,我的玩家会朝正确的方向移动,但只会执行向右走的动画。

当前有效的动画,在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) 是从精灵表中剪切出来的位置。但是,我还需要(例如)new Rectangle(30, 101, 65, 52),它会在按下 left 箭头键时正确地为我的角色设置动画。

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

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

【问题讨论】:

    标签: c# xna sprite monogame


    【解决方案1】:

    我认为更好的方法是将整个精灵表(或包含玩家精灵的精灵表的整个部分)传递给Player 类,并有一个单独的动画类处理如何从床单。如果你有相同大小的框架,这会更容易,但如果你不这样做也是可行的。

    在动画类中,您可以为每个动画设置一个List&lt;Rectangle&gt;MoveUp, MoveDown, MoveLeft, MoveRight 等,然后在您的播放器执行其中一个动作时从您的Player 类调用方法PlayAnimation()

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 2022-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多