C++ 如何制作图形动画 (POO)
C++ How to animate graphics (POO)
我正在使用面向编程的对象和 classes 在 C++ 中开发一个游戏项目,但我想不出一种方法来为以下图形制作动画。
我需要的是当玩家按住左键或右键时,图形应该出现让角色喜欢移动,当他们停止按住键时它会变成空闲图形。
我无法在此处粘贴整个源代码,我有很多 classes 和函数。我需要的只是关于如何实现它的基本概念、示例或函数任何有用的东西.我不需要库,因为我只有两个要设置动画的精灵,所以没有必要。
例如 Sprites 创建对象的 class 和 Koala 移动并打印对象的 Koala在某个位置。
Sprites idleSprite, walkingSprite;
Koala koala;
这些声明只是为了避免其他解释。
非常感谢你的帮助。
PD:不用担心键盘按键或其他 class,我只需要如何为精灵设置动画。
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、方向、移动状态和状态步长的函数,以 return/draw 精灵在正确的位置。
我正在使用面向编程的对象和 classes 在 C++ 中开发一个游戏项目,但我想不出一种方法来为以下图形制作动画。
我需要的是当玩家按住左键或右键时,图形应该出现让角色喜欢移动,当他们停止按住键时它会变成空闲图形。
我无法在此处粘贴整个源代码,我有很多 classes 和函数。我需要的只是关于如何实现它的基本概念、示例或函数任何有用的东西.我不需要库,因为我只有两个要设置动画的精灵,所以没有必要。
例如 Sprites 创建对象的 class 和 Koala 移动并打印对象的 Koala在某个位置。
Sprites idleSprite, walkingSprite;
Koala koala;
这些声明只是为了避免其他解释。
非常感谢你的帮助。
PD:不用担心键盘按键或其他 class,我只需要如何为精灵设置动画。
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、方向、移动状态和状态步长的函数,以 return/draw 精灵在正确的位置。