Cześć.
Jestem całkowicie nowy w tej branży, od kilku miesięcy uczę się C#, lecz programowanie gier i pisanie własnego silnika graficznego w tym języku jest dla mnie jeszcze trochę za bardzo skomplikowane. Po 6 miesiącach dopiero dobrze zrozumiałem klasy, delegacje, zdarzenia itp...
Natknąłem się na program Game Maker przypadkiem jakiś czas temu, korzystając z dokumentacji napisałem skrypt na poruszanie się bohatera w grze. Proszę o ocenę kodu, czy idę w dobrym kierunku, czy robię jakieś podstawowe błędy? Kod na poruszanie bohatera umieściłem w evencie STEP.
GML
//////////////////////////////////////// Biegnie - zmienna przyspieszenie - SHIFT
if (keyboard_check_pressed(vk_shift))
{
if (global.WcisnietyShift = 0 && (PlayerClass.newX == PlayerClass.x) && (PlayerClass.newY == PlayerClass.y))
global.WcisnietyShift = 1;
else if (global.WcisnietyShift = 1 && (PlayerClass.newX == PlayerClass.x) && (PlayerClass.newY == PlayerClass.y))
global.WcisnietyShift = 0;
}
////////////////////////////////////////
if (keyboard_check(vk_left) && (PlayerClass.newX == PlayerClass.x) && (PlayerClass.newY == PlayerClass.y))
{
global.kierunek = 2;
PlayerClass.sprite_index = PlayerGraph_Left;
PlayerClass.image_speed = 0.3;
PlayerClass.newX -= 32;
}
if (keyboard_check(vk_right) && (PlayerClass.newX == PlayerClass.x) && (PlayerClass.newY == PlayerClass.y))
{
global.kierunek = 3;
PlayerClass.sprite_index = PlayerGraph_Right;
PlayerClass.image_speed = 0.3;
PlayerClass.newX += 32;
}
if (keyboard_check(vk_up) && (PlayerClass.newY == PlayerClass.y) && (PlayerClass.newX == PlayerClass.x))
{
global.kierunek = 1;
PlayerClass.sprite_index = PlayerGraph_Up;
PlayerClass.image_speed = 0.3;
PlayerClass.newY -= 32;
}
if (keyboard_check(vk_down) && (PlayerClass.newY == PlayerClass.y) && (PlayerClass.newX == PlayerClass.x))
{
global.kierunek = 0;
PlayerClass.sprite_index = PlayerGraph_Down;
PlayerClass.image_speed = 0.3;
PlayerClass.newY += 32;
}
// poruszanie lewo i prawo
if (PlayerClass.newX < PlayerClass.x)
{
if (global.WcisnietyShift = 1)
{
hspeed = -4;
}
else
{
hspeed = -2;
}
}
if (PlayerClass.newX > PlayerClass.x)
{
if (global.WcisnietyShift = 1)
{
hspeed = 4;
}
else
{
hspeed = 2;
}
}
if (PlayerClass.x = PlayerClass.newX)
{
hspeed = 0;
if (global.kierunek == 2 || global.kierunek == 3)
{
PlayerClass.image_speed = 0;
PlayerClass.image_index = 0;
}
}
// ---------------------------------------
// poruszanie gora i dol
if (PlayerClass.newY < PlayerClass.y)
{
if (global.WcisnietyShift = 1)
{
vspeed = -4;
}
else
{
vspeed = -2;
}
}
if (PlayerClass.newY > PlayerClass.y)
{
if (global.WcisnietyShift = 1)
{
vspeed = 4;
}
else
{
vspeed = 2;
}
}
if (PlayerClass.newY = PlayerClass.y)
{
vspeed = 0;
if (global.kierunek == 0 || global.kierunek == 1)
{
PlayerClass.image_speed = 0;
PlayerClass.image_index = 0;
}
}
// ---------------------------------------
Z góry dziękuję...