Skocz do zawartości

Kopanie piłki


Rekomendowane odpowiedzi

Niewiem jak zrobić żeby po wciśnięciu klawisza np. "z" piłkarz kopnął piłkę w stronę którą stoi więdząc, ze piłka to osobny obiekt.

 

Możesz użyć funkcji point_direction(x,y,pilka.x,pilka.y) i ustawić dzięki niej direction piłki.

 

if keyboard_check(ord('Z'))
{
  pilka.direction=point_direction(x,y,pilka.x,pilka.y)
}

Odnośnik do komentarza
Udostępnij na innych stronach

pilka.direction=point_direction(x,y,pilka.x,pilka.y)

tak jak napisales pilka bedzie leciec w swoja wlasna strone.. hmmm chyba nie do konca o to chodzilo ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Hmm... nie chce się wtrącać, ale to powinno chyba wyglądać tak:

W Step:

If Keyboard_Check_Pressed('Z') //jezeli nacisniesz Z
{ 
pilka.direction=self.direction //kierunek lotu pilki to kierunek pilkarza
}

 

Edit: A nie wszystko dobrze :P . Ale nie moze być direction=point_direction! Wtedy piłka leci w piłkarza. :jezor:

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze, nie istnieje funkcja Keyboard_Check_Pressed, tak samo If. Po drugie, GM jest głupi, dlatego też żeby wyciągnąć wartość ASCII Z piszesz ord('Z'), po za tym, po co mnożyć kierunek? No i mogę się przyczepić do odwołania self, jest tutaj nie potrzebne bo i tak kod dotyczy obiektu w którym kod zostanie wywołany. :P

 

if( keyboard_check_pressed( ord( 'Z' ) ) )
{
     pilka.direction = direction;
}

No i można wprowadzić ograniczenie odległości:

if( keyboard_check_pressed( ord( 'Z' ) ) )
{
     if( distance_to_object( pilka ) < 32 )
          pilka.direction = direction;
}

Tyle z mojego marudzenia. =P

 

EDIT

Może być point_direction, a nawet jest na miejscu użycie tej funkcji:

if( keyboard_check_pressed( ord( 'Z' ) ) )
{
     if( distance_to_object( pilka ) < 32 )
          pilka.direction = point_direction( x, y, pilka.x, pilka.y );
}

Tylko zależy z jakiej strony patrzysz. =)

Odnośnik do komentarza
Udostępnij na innych stronach

EDIT: @up chyba dobrze!!!

@ To może proponuje żeby przy kolizji z piłkom zawodnik zmniejszał prędkość do np.1 bo (ale się nie znam) myślę że trudno wycelować akurat w tym momęcie żeby piłke strzelić.

@ spruduj jeszcze tak skasuj (z roomu!!!) zawodnika i stwórz go w roomie jeszcze raz.

Odnośnik do komentarza
Udostępnij na innych stronach

Mniej więcej coś takiego:

 

CREATE:

 

possession=noone;

 

STEP:

 

if possession!=noone
{
  //ustaw pozycję piłki przy graczu
  x = possession.x; //możesz dodać coś do tych współrzędnych, np. "+lengthdir_x(16,possession.direction)"
  y = possession.y;
}

 

Ten skrypt umieść w obiekcie "pilka". Zmienna possession będzie wynosić id zawodnika, przy którym się znajduje piłka.

 

STEP:

 

if place_meeting(x,y,pilka) //jeśli kolizja z piłką
{
  pilka.possession=id;
}

if( keyboard_check_pressed(ord( 'Z' )))
{
     if( distance_to_object( pilka ) < 32 ) and pilka.possession = id //jesli dystans jest mniejszy niż 32 oraz gracz jest przy piłce
          pilka.direction = direction;
          pilka.speed = ilestam;
          pilka.possession = noone; //wyzeruj posiadanie piłki
}

Odnośnik do komentarza
Udostępnij na innych stronach

Hm, możesz spróbować wyedytować (dodać kilka warunków itp.) ten kod albo go w ogóle usunąć:

 

if possession!=noone
{
  //ustaw pozycję piłki przy graczu
  x = possession.x; //możesz dodać coś do tych współrzędnych, np. "+lengthdir_x(16,possession.direction)"
  y = possession.y;
}

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