create
speedH = 0;
speedV = 0;
// Podstawowe parametry
speedMaxH = 5; //Maksymalna prędkość w poziomie
speedMaxV = 8; //Maksymalna prędkość w pionie
speedJump = 12; //Maksymalna siła wyskoku
// Parametry zmienne
speedFriction = 0; //Tarcie
speedAcceleration = 0; //Przyspieszenie
speedGravity = 0; //Grawitacja
// Dokładność obliczeń
precision = 2;
// Zmienne konfiguracji klawiszy
keyUp = vk_up;
keyDown = vk_down;
keyLeft = vk_left;
keyRight = vk_right;
// Animacje
animationInit();
animationStoi = animationAdd( stoi, 0.5 );
animationIdzie = animationAdd(idzie, 0.4 );
animationSkacze = animationAdd(skok, 0.6 );
animationStrzela = animationAdd(strzela,1);
animationstrzelaw = animationAdd(strzelaw,0.6);
time=0
Step
// Gracz jest w powietrzu
if( place_free( x, y + 1 ) )
{
speedFriction = 0.1;
speedAcceleration = 0.1;
speedGravity = 0.3;
}
else
// Gracz stoi na platformie
{
speedFriction = 0.4;
speedAcceleration = 0.5;
speedGravity = 0;
// Skok
if( keyboard_check( vk_numpad8 ) )
speedV = -abs( speedJump );
}
// Grawitacja
speedV += speedGravity;
// Skok cd.
if( speedV < 0 )
{
if( keyboard_check_released( vk_numpad8 ) )
speedV /= 2;
}
// Ograniczenia
if( abs( speedV ) > speedMaxV )
speedV = speedMaxV * sign( speedV );
// Ruch pionowy
_s = sign( speedV ) / precision;
repeat( abs( speedV ) * precision )
{
if( place_free( x, y + _s ) )
y += _s;
else
{
speedV = 0;
break;
}
}
var _s;
// Ruch w lewo
if keyboard_check(vk_numpad4 )
speedH -= speedAcceleration;
else
// Ruch w prawo
if keyboard_check( vk_numpad6 )
speedH += speedAcceleration;
else
// Tarcie
speedH = max( 0, abs( speedH ) - speedFriction ) * sign( speedH );
// Ograniczenia
if( abs( speedH ) > speedMaxH )
speedH = speedMaxH * sign( speedH );
// Ruch poziomy
_s = sign( speedH ) / precision;
repeat( abs( speedH ) * precision )
{
_pf = !place_free( x, y + 1 );
if( _pf && place_free( x + _s, y + 2 ) )
{
x += _s;
y += 2;
}
else
if( _pf && place_free( x + _s, y + 1 ) )
{
x += _s;
y += 1;
}
else
if( place_free( x + _s, y ) )
{
x += _s;
}
else
if( _pf && place_free( x + _s, y - 1 ) )
{
x += _s;
y -= 1;
}
else
if( _pf && place_free( x + _s, y - 2 ) )
{
x += _s;
y -= 2;
}
else
{
animationPlay( stoi );
speedH = 0;
break;
}
}
var _s, _pf;
Endstep
// Kierunek animacji
if( speedH != 0 )
image_xscale = sign( speedH );
// Gracz jest w powietrzu
if( place_free( x, y + 1 ) )
animationPlay(skok);
else
// Gracz jest na platformie
{
// Gracz stoi
if( speedH = 0 )
animationPlay( stoi );
else
// Gracz porusza się
animationPlay(idzie );
}
if place_meeting(x,y+1,obj_blok1) and keyboard_check(vk_enter)
{animationPlay(strzela)}
if not place_meeting(x,y+1,obj_blok1) and keyboard_check(vk_enter)
{animationPlay(strzelaw)}