C ++如何为图形设置动画(POO)

时间:2015-04-17 21:32:52

标签: c++ animation graphics sprite

我正在使用面向编程的对象和类在c ++中开发一个游戏项目,但我无法找到一种方法来动画下面的图形。

我需要的是当玩家按住左键或右键时,图形应该显示为使角色像移动一样,当他们停止按住键时它将变为空闲图形。

我不能在这里粘贴整个源代码,我有很多类和函数..我需要的是一个基本的想法,如何实现它,一个例子或一个有用的函数。我不需要库,因为我只有两个精灵来制作动画,所以没有必要。

例如, Sprites 创建对象的类和考拉移动它的那个并将其打印到某个位置。

Sprites idleSprite, walkingSprite;
Koala koala;

这些声明只是为了避免其他解释。

enter image description here

感谢您的帮助。

PD:不要担心键盘键,或者我需要的其他类是如何为sprite设置动画。

1 个答案:

答案 0 :(得分:2)

Koala应该有两种状态:

  • 方向状态:enum Direction {Left,Right};
  • 运动状态。 enum Movement { Idle, Walk };

由于您只有一张行走状态的图片,因此以图形方式移动图片会给人一种浮体的印象。我建议你至少有两个行走位置来表明脚在移动:

  • 一个运动步骤计数器
  • 最大步数的常数。

然后应根据键盘状态和已用时间在游戏循环中更新状态。伪代码类似于:

if (!arrow_key_pressed()) {
    status_movement = Idle;
    lasttimer = gametimer();   // keep track of last event 
} 
else {
    status_movement = Walk; 
    if (left_arrow_pressed() ) 
        status_direction = Left; 
    else if (right_arrow_pressed() )
        status_direction = Right; 
    if (gametimer() - lasttimer > 2 ms ) {  // if enough time, 
       if (status_direction==Left) 
          position_x -= step_increment; 
       else if (status_direction==Right)
          position_x += step_increment; 
       movement_step = (movement_step+1) % maxi_steps;
       lasttimer = gametimer(); 
   }
}

您要做的就是在旧位置恢复图片背景,并在该位置绘制图片。为此,您可以调用具有参数position_x,方向,移动状态和状态步骤的函数,以在正确的位置返回/绘制精灵。