Прямо сейчас, когда я начинаю свою игру, я делаю в C ++, я иду влево вправо вверх или вниз ... Но персонаж просто скользит, не похоже, что он идет ... И у меня есть все картинки, уже загруженные в мою игру, и ониработают .. Но я не знаю, как бы я решил это .. То, что я не могу понять, это как изменить изображение, когда вы удерживаете кнопку ..
Это в аллегроway ..
Вот мой код для рисования игрока:
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;
}
вот теперь новый полный код, который я набрал послеполучить помощь здесь .. Его теперь не работает, когда я иду вверхкак передняя картинка, и я иду вниз, вверх показывает изображение .. Но работает влево и вправо .. Также это не меняется изображение, как анимация ..