Skocz do zawartości

Odtwarzanie animacji na "solid"


Rekomendowane odpowiedzi

Witam.

 

Po dwóch latach, postanowiłem znowu zacząć się bawić w gm i znowu napotykam problemy na początku tworzenia. Ostatnio pomógł mi użytkownik

z Czech Ereg, za co mu serdecznie dziękuje, bo z jego przykładów korzystam do dziś.

 

Mianowicie buguje mi się miecz [niepoprawne animacje] na obiekcie z włączonym "solid", a bohater, na którym użyłem identycznej komendy, działa jak należy. Przesyłam film dla lepszego zrozumienia i oczywiście skrypty w gml'u.

 

 

Skrypt miecza:

GML
// Animacje

if(keyboard_check(ord("D")) && place_free(x+4,y)) {

sprite_index = Miecz1_right;

image_speed = .2;

image_xscale = 1;

}

 

if(keyboard_check(ord("A")) && place_free(x-4,y)) {

sprite_index = Miecz1_left;

image_speed = .2;

image_xscale = 1;

}

 

if(keyboard_check(ord("W")) && place_free(x,y+4)) {

sprite_index = Miecz1_up;

image_speed = .2;

image_xscale = 1;

}

 

if(keyboard_check(ord("S")) && place_free(x,y-4)) {

sprite_index = Miecz1_down;

image_speed = .2;

image_xscale = 1;

}

 

if((!keyboard_check(ord("D")) && !keyboard_check(ord("A")) && !keyboard_check(ord("S")) && !keyboard_check(ord("W") )))

{

 

image_speed = 0;

sprite_index = Miecz1_stand;

 

}

 

// Spawn

x = Jan.x;

y = Jan.y;

 

Skrypt bohatera [Jan]:

GML
// Sterowanie i Animacja

if(keyboard_check(ord("D")) && place_free(x+4,y)) {

x+=4;

sprite_index = Jan_right;

image_speed = .2;

image_xscale = 1;

}

 

if(keyboard_check(ord("A")) && place_free(x-4,y)) {

x-=4;

sprite_index = Jan_left;

image_speed = .2;

image_xscale = 1;

}

 

if(keyboard_check(ord("W")) && place_free(x,y-4)) {

y-=4;

sprite_index = Jan_up;

image_speed = .2;

image_xscale = 1;

}

 

if(keyboard_check(ord("S")) && place_free(x,y+4)) {

y+=4;

sprite_index = Jan_down;

image_speed = .2;

image_xscale = 1;

}

 

if((!keyboard_check(ord("D")) && !keyboard_check(ord("A")) && !keyboard_check(ord("S")) && !keyboard_check(ord("W") )))

{

 

image_speed = 0;

sprite_index = Jan_stand;

 

}

 

Znajdzie się dobra duszeczka, która wyjaśni o co biega ?

Odnośnik do komentarza
Udostępnij na innych stronach

Wpadłem na pomysł, by napisać kod, że jeśli Miecz napotka "solid" to ma ustawiony sprite na standardowy, tak jak tutaj

GML
if((!keyboard_check(ord("D")) && !keyboard_check(ord("A")) && !keyboard_check(ord("S")) && !keyboard_check(ord("W") )))

{

 

image_speed = 0;

sprite_index = Miecz1_stand;

 

}

Próbuje już od pół godziny i nadal nie wiem jak napisać tą komende, próbowałem już z

GML
!place_free

GML
place_meeting

ale nie wychodzi

Odnośnik do komentarza
Udostępnij na innych stronach

W ogóle najlepiej zastanowić się skąd się to bierze.

Jak chodzisz to sprawdza czy jest obok wolne miejsce. Więc jeśli nie znajdzie to zostanie przy starej animacji. A wolnego miejsca nie znajduje bo obok jest SOLID.

Weź spróbuj pousuwać to place_free z kodu miecza, dla testu.

A może niech animacja miecza będzie zmieniała się nie względem wciśniętych klawiszy i pozycji, a animacji bohatera? Coś takiego

GML
if(Jan.sprite_index==Jan_right)

sprite_index=Miecz1_right;

Odnośnik do komentarza
Udostępnij na innych stronach

Użyłem twojego kodu

GML
// Animacje

if(Jan.sprite_index==Jan_right) {

sprite_index=Miecz1_right;

image_speed = .2;

image_xscale = 1;

}

 

if(Jan.sprite_index==Jan_up) {

sprite_index=Miecz1_up;

image_speed = .2;

image_xscale = 1;

}

 

if(Jan.sprite_index==Jan_down) {

sprite_index=Miecz1_down;

image_speed = .2;

image_xscale = 1;

}

 

if(Jan.sprite_index==Jan_left) {

sprite_index=Miecz1_left;

image_speed = .2;

image_xscale = 1;

}

 

if(Jan.sprite_index==Jan_stand) {

sprite_index=Miecz1_stand;

image_speed = .2;

image_xscale = 1;

}

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...