现在,当我开始使用 C++ 制作游戏时,我会左右行走。但是角色只是滑动看起来不像在行走。而且我已经将所有图片加载到我的游戏中并且它们正在工作。 .但我不知道我会如何解决它..我想不通的是当你按住按钮时如何改变图片..
顺便说一句,这是在快板中..
这是我的绘图播放器代码:
void Player::Draw(BITMAP *Buffer){
draw_sprite(Buffer, Oskar[picNumber], x, y);
}
Oskar[] 是包含所有图片的数组的名称..
当您按下按钮时,以下是更改角色图片的内容:
void Player::Controls(){
if(key[KEY_RIGHT]){
velocityX = speed;
picNumber = 6;
}
else if(key [KEY_LEFT]){
velocityX = -speed;
picNumber = 9;
}
else{
velocityX = 0;
}
if(key [KEY_UP]){
velocityY = -speed;
picNumber = 3;
}
else if(key [KEY_DOWN]){
velocityY = speed;
picNumber = 0;
}
else{
velocityY = 0;
}
x += velocityX;
y += velocityY;
}
这都是关于我创建 picNumber 的变量。我拥有的所有图片都在一个数组中,而 picNumber 代表要绘制的图片。如果能得到一些帮助会很高兴。我整天都在想这个..
编辑
#include "Player.h"
#include "Global.h"
#include <allegro.h>
Player::Player(){
}
Player::~Player(){
}
void Player::Init(){
x = 10;
y = 10;
velocityX = 0;
velocityY = 0;
speed = 1;
picNumber = x % MAXPICS;
OskarFront[0] = load_bitmap("Character\\OskarFront.bmp", NULL);
OskarFront[1] = load_bitmap("Character\\OskarStanding.bmp", NULL);
OskarFront[2] = load_bitmap("Character\\OskarFront2.bmp", NULL);
OskarBack[0] = load_bitmap("Character\\OskarBack.bmp", NULL);
OskarBack[1] = load_bitmap("Character\\OskarStandingBack.bmp", NULL);
OskarBack[2] = load_bitmap("Character\\OskarBack2.bmp", NULL);
OskarRight[0] = load_bitmap("Character\\Oskar1.bmp", NULL);
OskarRight[1] = load_bitmap("Character\\Oskar.bmp", NULL);
OskarRight[2] = load_bitmap("Character\\Oskar2.bmp", NULL);
OskarLeft[0] = load_bitmap("Character\\OskarLeft.bmp", NULL);
OskarLeft[1] = load_bitmap("Character\\OskarLeftStand.bmp", NULL);
OskarLeft[2] = load_bitmap("Character\\OskarLeft2.bmp", NULL);
}
void Player::Update(){
Player::Controls();
}
void Player::Draw(BITMAP *Buffer){
if(walkingRight == true){
draw_sprite(Buffer, OskarRight[picNumber], x, y);
}
else if(walkingLeft == true){
draw_sprite(Buffer, OskarLeft[picNumber], x, y);
}
else if(walkingFront == true){
draw_sprite(Buffer, OskarFront[picNumber], x, y);
}
else if(walkingBack == true){
draw_sprite(Buffer, OskarBack[picNumber], x, y);
}
else{
draw_sprite(Buffer, OskarFront[1], x, y);
}
}
void Player::Controls(){
if(key[KEY_RIGHT]){
velocityX = speed;
walkingRight = true;
}
else if(key [KEY_LEFT]){
velocityX = -speed;
walkingLeft = true;
}
else{
walkingRight = false;
walkingLeft = false;
velocityX = 0;
}
if(key [KEY_UP]){
velocityY = -speed;
walkingFront = true;
}
else if(key [KEY_DOWN]){
velocityY = speed;
walkingBack = true;
}
else{
velocityY = 0;
walkingFront = false;
walkingBack = false;
}
x += velocityX;
y += velocityY;
}
这是我在这里获得帮助后输入的新的完整代码。它现在不工作,当我走上它显示前面的图片并且我走下上面的图片时,它正在显示..但是左右工作..它也没有改变像动画一样的画面。。