Cum se face o coliziune normală cu pereții în arcade 2d

CRYSTALL m
maestru
Grupa: Comunitate GM
Posts: 8 Membri:

M-am uitat la jocurile făcute pe GM și am văzut că sunt foarte multe jamburi blocate în pereți, așa că vreau să vă spun cum se face mișcarea normală.






Deci, să începem.
Pentru un joc bun, trebuie mai întâi să vă gândiți cum să faceți acest lucru.
Așa am venit cu codul scrise în 10 minute, dar garantează că nu vor mai fi puțuri.

Creați un obiect de jucător și un obiect de perete.
Lăsați obiectele de jucărie și de perete să aibă un sprite 32 * 32 și un centru la (16; 16)
Noi scriem pentru jucător
În Creare, scriem:
aer = 0;
global.grav = 0;
hsp = 5;
salt = 2;

În pas vom scrie:
wi = collision_rectangle (x-15, y + 17, x + 15, y + 17 + vspeed, perete, 0,0)
dacă wi> 0 și vspeed> 0 și air = 1 atunci
aer = 0;
vspeed = 0;






gravitatea = 0;
y = wi.y-32;
salt = 2
>
. Acesta este un test de coliziune cu un perete de dedesubt
dacă wi<0 and air=0 then
aer = 1;
gravitatea = global.grav
salt - = 1
>
. Verificarea absenței unui zid de dedesubt

dacă wi> 0 și vspeed<0 then
vspeed = 0;
y = wi.y + 32;
>
. coliziune cu plafonul
Acesta este modul în care este scris procesarea saltului
Acum saltul în sine:

Pentru evenimentul KeyPress (orice cheie), scrieți:
dacă sari> 0 atunci
vspeed- = 5;
gravitatea = global.grav
salt = 1;
>
Acum treceți la dreapta (stânga):
Pentru evenimentul KeyRight:
wi = collision_rectangle (x + 17, y-15, x + 17 + hsp, y + 15, perete, 0,0)
dacă wi<0 then
x + = hsp
>
altfel
x = wi.x-32;
>

Pentru evenimentul KeyLeft:
wi = collision_rectangle (x-17, y-15, x-17-hsp, y + 15, perete, 0,0)
dacă wi<0 then
x- = hsp
>
altfel
x = wi.x + 32;
>

Asta e tot.
Acest cod simplu - studiul coliziunilor, cel puțin nu am buggy.
Dacă îmi amintesc corect, acesta este codul pe care îl folosesc.
Agățat pe pereți, etc. ușor de adăugat

Rap_Person
maestru
Grupa: Comunitate GM
0 posturi







Articole similare

Trimiteți-le prietenilor: