Ajutați producătorul de jocuri 8

deplasare

Evident, un aspect important al jocului este mișcarea instanțelor obiectului. Fiecare instanță a obiectului are două variabile încorporate, x și y, care indică poziția acestei instanțe. Mai precis, ele indică locul unde este stabilită originea spritei. Poziția (0,0) este colțul din stânga sus al camerei. Puteți schimba poziția unei instanțe a unui obiect schimbând variabilele x și y. Dacă doriți să faceți mișcările obiectului mai complexe, atunci acesta este un mod bun. Veți pune, de obicei, acest cod în evenimentul pas pentru obiect.







Dacă obiectul se mișcă cu viteză și direcție constante, atunci există o modalitate mai ușoară de a realiza acest lucru. Fiecare instanță a obiectului are o viteză orizontală (hspeed) și o viteză verticală (vspeed) (pixeli pe pas). O viteză orizontală pozitivă înseamnă mișcarea spre dreapta, iar o viteză orizontală negativă înseamnă mișcarea spre stânga. Viteza verticală pozitivă - viteza verticală verticală și negativă - în sus. Deci, trebuie să setați aceste variabile numai atunci (de exemplu, în evenimentul de creare), când trebuie să furnizați instanța obiectului cu o mișcare constantă.

Există un alt mod de determinare a mișcării, folosind direcția (în grade 0-359) și viteza (nu trebuie să fie negativă). Puteți seta și citi aceste variabile pentru a determina mișcarea arbitrară. (Se modifică în mod direct valorile hspeed și vspeed.) Există, de asemenea: forța de frecare, gravitația și direcția gravitației. În cele din urmă, există o funcție motion_add (dir, speed). Pentru a adăuga mișcare la instanța curentă a obiectului.

Pentru un set complet, fiecare instanță a obiectului are următoarele variabile și funcții relevante pentru poziția și mișcarea sa:

x Reflectă coordonatele instanței obiectului de-a lungul axei x.
y Reflectă coordonatele instanței obiectului de-a lungul axei Y.
xprevious Reflectă coordonatele instanței obiectului de-a lungul axei X din pasul anterior.
yprevious Reflectă coordonatele instanței obiectului de-a lungul axei Y din pasul anterior.
xstart Reflectă coordonatele axei x din camera curentă la pornire.
ystart Reflectă coordonata axei y în camera curentă la pornire.
hspeed Reflectă viteza de mișcare a unei instanțe obiect orizontal.
vspeed Reflectă rata de mișcare a unei instanțe a unui obiect pe verticală.
direcție Reflectă direcția curentă a instanței obiectului (de la 0 la 360 de grade, numărarea este în sens contrar acelor de ceasornic, 0 este în dreapta).
viteza reflectă viteza curentă a instanței obiectului (pixeli pe pas).
friction Reflectă frecarea curentă a instanței obiectului (pixeli pe pas).
gravitate Reflectă forța gravitațională pentru instanța obiectului curent (pixeli pe pas).
gravity_direction Reflectă direcția gravitației pentru instanța curentă a obiectului (270 - în jos).






motion_set (dir, speed) Cauzează instanța curentă a obiectului să se miște în direcția dir la viteza de viteză.
motion_add (dir, speed) "Vector" adaugă mișcare cu viteză și direcție dir la mișcarea curentă a instanței obiectului.

Există, de asemenea, multe funcții care vă vor ajuta să gestionați mișcările pe care le specificați:

place_free (x, y) Returnează true dacă nu există coliziuni cu obiecte solide cu o instanță de obiect plasată într-un punct cu coordonate (x, y). De obicei, această funcție este utilizată pentru verificare înainte de a muta instanța obiectului direct în poziția cu coordonate (x, y).
place_empty (x, y) Returnează adevărat dacă nu există coliziuni cu instanța obiectului, plasată într-un punct cu coordonate (x, y).
place_meeting (x, y, obj) Returnează adevărat dacă apare o coliziune cu o instanță a obiectului obj atunci când instanța curentă a obiectului este plasată într-un punct cu coordonate (x, y). Acesta poate fi, de asemenea, un identificator de instanță, un cuvânt special, sau alt cuvânt special.
place_snapped (hsnap, vsnap) Returnează true dacă instanța curentă a obiectului este aliniată pe o rețea cu celule de dimensiunea pixelilor vsnap la hsnap.
move_random (hsnap, vsnap) Mută ​​instanța curentă a obiectului într-o celulă de rețea liberă arbitrară din camera curentă.
move_snap (hsnap, vsnap) Mută ​​instanța curentă a obiectului la cea mai apropiată celulă de rețea a camerei curente.
move_wrap (hor, vert, margin) Mută ​​o instanță a obiectului în cealaltă parte a camerei când o părăsește în străinătate. hor - specifică schimbarea orizontală și vert - specifică transferul vertical. margine - indică cât de mult centrul exemplarului ar trebui să fie în afara camerei atunci când se face împachetarea. În mod obișnuit, se utilizează în Evenimentul exterior.
move_towards_point (x, y, sp) Cauzează instanța curentă a obiectului să se deplaseze spre punctul cu coordonatele (x, y) la rata sp.
move_bounce_solid (adv) Exemplul curent al obiectului va ricocheta numai din cazuri de obiecte solide. Dacă adv este adevărat, atunci ricochetul va fi avansat (de pe pereții oricărei pârtii)
move_bounce_all (adv) Exemplu-ul curent al obiectului va ricoșa din instanțele tuturor obiectelor.
move_contact_solid (dir, maxdist) Face o copie a unui obiect în mișcare în direcția dir până la instanța curentă a obiectului nu se confruntă cu o copie a obiectului. Argumentul maxdist conține distanța maximă (în pixeli) pe care o instanță de obiect trebuie să treacă. Aceasta este, în cazul în care instanța de obiect trece distanța maximă fără a întâmpina cazuri de obiecte solide, se va opri în continuare. Dacă doriți o copie a obiectului este încă în mișcare înainte de coliziune, indiferent de mărimea distanței parcurse, maxdist atribuie valoarea -1 (pentru o distanță arbitrară, utilizați o valoare negativă).
move_contact_all (dir, maxdist) La fel ca și funcția anterioară, cu diferența că instanța obiectului se va mișca până când va întâlni o instanță a unui obiect.
move_outside_solid (dir, maxdist) Face o copie a obiectului în mișcare în direcția dir până instanța curentă a obiectului în contact cu instanta obiect solid. Dacă contactul nu are loc, copia rămâne în poziție. Argumentul maxdist conține lungimea (în pixeli), care o instanță trebuie să treacă (pentru o distanță arbitrară, utilizează valori negative).
move_outside_all (dir, maxdist) La fel ca procedura precedentă, cu diferența că instanța obiectului se va muta în timp ce se contactează o instanță a unui obiect.
distance_to_point (x, y) Returnează distanța de la punct cu coordonatele instanței curente a obiectului la punctul cu coordonatele (x, y).
distance_to_object (obj) Returnează distanța până la cea mai apropiată instanță obiect obj.
position_empty (x, y) Returnează true dacă nu există nimic la punctul de coordonate (x, y).
position_meeting (x, y, obj) Returnează true dacă există o instanță a obiectului obj în punctul cu coordonate (x, y). obj poate fi un obiect, un identificator de instanță obiect sau unul dintre cuvintele cheie: auto. altele. sau toate.







Trimiteți-le prietenilor: