我正在使用面向编程的对象和类在c ++中开发一个游戏项目,但我无法找到一种方法来动画下面的图形。
我需要的是当玩家按住左键或右键时,图形应该显示为使角色像移动一样,当他们停止按住键时它将变为空闲图形。
我不能在这里粘贴整个源代码,我有很多类和函数..我需要的是一个基本的想法,如何实现它,一个例子或一个有用的函数。我不需要库,因为我只有两个精灵来制作动画,所以没有必要。
例如, Sprites 创建对象的类和考拉移动它的那个并将其打印到某个位置。
Sprites idleSprite, walkingSprite;
Koala koala;
这些声明只是为了避免其他解释。
感谢您的帮助。
PD:不要担心键盘键,或者我需要的其他类是如何为sprite设置动画。
答案 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,方向,移动状态和状态步骤的函数,以在正确的位置返回/绘制精灵。