De ce nu funcționează evenimentul meu GameMaker Step? (Dezvoltarea jocurilor, Creator De Jocuri)

exceltior a intrebat.

Deci, vreau să fac un fel de podea pe care jucătorul, atunci când intră, își reduce mișcarea, dar am mii de probleme diferite în implementarea acestui lucru, deoarece nu pare să facă nimic…

Așa că am încercat diferite moduri:

1 – Am încercat Step Event care a avut următorul script:

if keyboard_check(ord('A'))
{
    player.x = -5;
}
if keyboard_check(ord('D'))
{
    player.x = -5;
}
if keyboard_check(ord('W'))
{
    player.x = -5;
}
if keyboard_check(ord('S'))
{
    player.x = -5;
}

2 – Am încercat un eveniment de coliziune cu același cod.

3 – Am încercat un eveniment Step cu detectarea coliziunii pe un script

Niciuna dintre aceste opțiuni nu pare să funcționeze deloc … Mă puteți ajuta?

user1430

Comentarii

  • Există două posibilități aici: 1 – GameMaker este de vină (ceea ce probabil nu este cazul) 2 – Nu aveți o instanță a obiectului în cameră. Este foarte greu să diagnostichezi problema fără să vezi ecranele(deoarece Game-Maker este un instrument vizual pentru dezvoltarea de jocuri).  > Por Grey.
1 răspunsuri
ntakouris

Din cod , îmi dau seama că setezi coordonatele jucătorului la -5. Ar trebui să ai o metodă care să calculeze delta(sau timpul/framele trecute) și în metoda de randare , să desenezi jucătorul la x,y după ce ai setat coordonatele jucătorilor înmulțindu-le cu viteza jucătorilor(pe care ar trebui să o setezi în cod). Așadar, iată un pseudocod:

//Calculating the delta
 //while initialization for first time:
 frame = currentTime // CALL THIS AT THE START OF YOUR LEVEL
 //while calculating
 delta = currentTime - frame
 frame = current time

//The player instance should have 2 variables , velocityX and velocityY
//Calculating the Δx ,Δy

x = x + (delta * velocityX)//move right
//or
x = x - (delta * velocityX)//move left

//same thing for the Y

Sper să vă fie de ajutor!S-ar putea să fie nevoie să faceți corecții mari și dure