Skocz do zawartości

Problem z Kolizją


Sminer

Rekomendowane odpowiedzi

Mam problem w grze "Pokemon"

Chce aby Moj ludzik dotykajac trawe miel 20% na to ze stworzy walke Pokemon.

(Chce zeby te 20% losowalo sie dopiero wtedy gdy moja posatc skonczy ruch po kratce(Postac chodzi po kratkach 32 na 32 piksele.) a nie wtedy gdy przchodzi na droga klatke

dlatego ze gdy tworzy walke i ja skonczy (nie bedac w kratce 32 na 32 piksele) to potem nie moze sie ruszac .

Moze pokaze kod jaki mam w stepie na poruszanie

 

--------------------------------------------------------------------------------------------------------------------------------------------

 

// sterowanie po kratkach 32x32

if (place_snapped(32,32))

{

//----------wzor ruchu--------

/*

jesli klawisz jest wcisniety to

{

jesli poczatek animacji jest ustawiony i (w przypadku ruchu poziomego) przerzucenie w poziomie oraz czy na drodze nie stoi przeszkoda to...

...zwiekszamy lub zmniejszamy punkt docelowy x lub y

ustalamy poczatek animacji

ustalamy koniec animacji

czy ma przerzucic w poziomie

jesli image_index jest poza granicami to ustawiamy go na poczatek

}

*/

//----------------------------

 

if (keyboard_check(vk_left))

{

if (pocz=4) && (image_xscale=-1) && (place_free(x-32,y))

mx -= 32;

pocz = 4;

kon = 7;

image_xscale = -1;

if (image_index<pocz) || (image_index>kon+1-szybkosc)

image_index = pocz;

}

else

if (keyboard_check(vk_right))

{

if (pocz=4) && (image_xscale=1) && (place_free(x+32,y))

mx += 32;

pocz = 4;

kon = 7;

image_xscale = 1;

if (image_index<pocz) || (image_index>kon+1-szybkosc)

image_index = pocz;

}

else

if (keyboard_check(vk_up))

{

if (pocz=8) && (place_free(x,y-32))

my -= 32;

pocz = 8;

kon = 11;

image_xscale = 1;

if (image_index<pocz) || (image_index>kon+1-szybkosc)

image_index = pocz;

}

else

if (keyboard_check(vk_down))

{

if (pocz=0) && (place_free(x,y+32))

my += 32;

pocz = 0;

kon = 3;

image_xscale = 1;

if (image_index<pocz) || (image_index>kon+1-szybkosc)

image_index = pocz;

}

}

if (mx<x) // jesli mx jest na lewo od x

hspeed = -4;

else

if (mx>x) // jesli mx jest na prawo od x

hspeed = 4;

else

if (my<y) // jesli my jest wyzej od y

vspeed = -4;

else

if (my>y) // jesli my jest nizej od y

vspeed = 4;

 

depth = -y; // zeby postacie nizej polozone byly bardziej widoczne

 

-----------------------------------------------------------------------------------------------------------------------------------------

a pryz kolizji z trawa

 

with (Moje_Pokemony) if (Ilosc_Pokemon>0) //to po to zeby stworzc walke dopiero gdy mam pokemona

{

if (ceil(random(20))=true) // 1/20 ze stworz sie walka

{

instance_create(0,0,Walka) /tworzy sie walka

}

}

 

Jak cos jest niezrozumiale to odpowiem na pytania

Odnośnik do komentarza
Udostępnij na innych stronach

Moim zdaniem h/vspeed jest tu dobrze wykorzystane. Po co pisać speed=, direction= jak można to zrobić w jednej linii? Poza tym założę się, że GM załatwia sprawę zmiany przesunięcia co klatkę za pomocą h/vspeed, nie speed, direction i trygonometrią.

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ę...