Skocz do zawartości

chodzenie przeciwników


VenToX

Rekomendowane odpowiedzi

mam pare pytań.... w sumie są banalne ale nie wiem jak sobie z nimi poradzić gdyż w programie game maker jestem newbie... jak zrobić żeby np. jakiś potwór chodził losowo w dowolnych kierunkach po mapie, a jak np. skręci w lewo to jego animacja się zmieni jak chodzi w lewo, jak pójdzie do góry to animacja jak idzie do góry ( mam już je gotowe ). jak by ktoś wiedział to proszę aby dawac jak najmniej kodów bo sie na tym nie znam :( a jak juz bedzie trzeba to powiedziec gdzie dokladnie to trzeba wkleic. I jeszcze chcialbym dodac ze mam GM 5.0 nie zarejestrowany. Prosze o pomoc!

Odnośnik do komentarza
Udostępnij na innych stronach

Na samych klockach:

w OBJECT potworka dajesz w evencie CREATE klocek 'set value of a variable' nazwij tą zmienną "move" albo "chodzenie" i daj wartość (value) równą zero ( czyli 0 ).

Również w Evencie CREATE dajesz klocek o nazwie 'Alarm 0' lub jakiś inny Alarm 1,2 lub 3 zalezy ile uzywasz.

 

Teraz dajesz w Evencie ALARM 0 (lub jaka tam cyferke wybrałeś) takie klocki po kolei:

 

"set value of a variable"

nazwa zmiennej: "move" (to samo co w create) a w wartości dajesz ' round(random(4)) ' (tak dwa nawiasy na końcu :P)

"if a variable has a value"

i tam ustawiasz 'equal' zmienna 'move' i wartość 1

'Start of a block'

tu bedzie bloczek

'Change the sprite'

to ci zmienia obrazek oczywiście :P

'start moveing in a direction'

wybierasz kierunek ruchu i szybkosc

'end of a block'

 

dalej dajesz to samo 3 razy tylko zmieniasz 'set value of a variable' na inną liczbe (od 0 do 4) i zmieniasz sprite i kierunek ruchu. powinny ci wyjsc 4 kierdunki- wartosci move od 1 do 4 licza 0 tez moze zostac wylosowana wtedy sprite bedzie stał w miejscu, jeśli nie chcesz zeby stał w miejscu to na pocztaku dajesz round(random(3)) i przyporzadkowujesz 4 kierunki liczbom od 0 do 3

 

Na samym końcu daj klocek 'set an alarm clock' i daj alarm 0 i jakaś wartosc (jak czesto sprite ma sie poruszać) i już ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Wielkie dzieki... teraz juz jest wszystko ok. ale mam jeszcze jedno pytanie :) powiedzmy ze juz sobie chodzi losowo ten moj przeciwnik (widze go) lecz jak przybliże się do niego do określonej odległości, przestanie już chodzić byle gdzie, tylko zacznie podążac za bohaterem (bedzie sie staral zeby ciagle byla kolizja)... mam nadzieje ze jest to do zrobionia :) prosilbym aby to bylo wytłumaczone jak powyzej i na klockach oczywiscie. :D

Odnośnik do komentarza
Udostępnij na innych stronach

ściągnij sobie GM6.1 :P GMy sie troche róznią między sobą więc nie wiem czy wszystko co ci pwoiem będzie ci działać ;)

 

co do chodzenia za Twoim bohaterem da się zrobić. :P

ale potrzebujesz troche kodu :)

 

w tym alarmie 0 wszystkie klocki jakie dałeś (łacznie z z ostatnim który ustawiał ci alarm) weź w następny block a przed nimi dajesz dwa klocki

 

pierwszy to klocek z kodem i tam wpisujesz coś takiego:

if distance_to_object(obj) < 50 //zamiast obj wpisz nazwe obj bohatera, 50 to odległość od bohatera, jeśli chcesz to zwiększ tą liczbe :)

{

move_towards_point(obj.x,obj.y,0) // obj.x i obj.y zastępujesz nazwą objecta bohatera zostawiając na końcu .x i .y (np bohater.x,bohater.y,0)

// 0 to szybkość

}

 

w kodzie wykasuj sobie wszystko co napisałem za znaczkami // (łacznie ze znaczkami) ale jesli tego nie zrobisz to też będzie działać ;)

po tym klocku dajesz klocek 'else'

 

i to są te dwa klocki które musisz dodać ;) powinno działać, jeśli chcesz pokombinować możesz również wyciągnać ostatni klocek "set alarm 0" poza 'block' :) chyba będzie inny efekt ale nie jestem pewien.

Odnośnik do komentarza
Udostępnij na innych stronach

Wszystko chodzi :) wiele tobie zawdzięczam. chyba sobie wezme Gm 6 ale mam jeszcze ostatnie pytanie. jak już je rozwiąże juz nie będzie żadnych problemów z chodzeniem przeciwnika :). żeczywiście jak jest jakaś odległość, zaczyna za mną podążać..... ale zapomnialem napisac aby animacja sie zachowala ( tzn. ze nie ma isc do przodu a jest odwrocony plecami ). ale wydaje mi sie... ze jak by sie w jakiś sposób usunęło chodzenie przeciwnika na ukos jak za mną podąża wszystko by było ok ale nie jestem pewien (takie moje przypuszczenia) jeśli jeszcze nie masz mnie dosc i wiesz jak to zrobic to mozesz napisac :P ale w koncu po to jest forum, zeby pomagac takze takim jak ja:)

Odnośnik do komentarza
Udostępnij na innych stronach

Da się zrobić ale jeszcze czegos takiego nie robilem :P czekaj, skręce jakiś kod to jak będzie działać to napisze :P

 

*edit*

if distance_to_object(o1) < 10000 && o1.y < o2.y

{

sprite_index=sprCHARUP

move_towards_point(o1.x,o1.y,1)

}

 

if distance_to_object(o1) < 10000 && o1.y > o2.y

{

sprite_index=sprCHARDOWN

move_towards_point(o1.x,o1.y,1)

}

 

if distance_to_object(o1) < 10000 && o1.x < o2.x

{

sprite_index=sprCHARLEFT

move_towards_point(o1.x,o1.y,1)

}

 

if distance_to_object(o1) < 10000 && o1.x > o2.x

{

sprite_index=sprCHARRIGHT

move_towards_point(o1.x,o1.y,1)

}

 

Kod nie jest doskonały ale nie mam głowy teraz :P narazie to co ci dałem ostatnio zastąp tym ;)

wszystkie obiekty o1 zastępujesz nazwą swojego bohatera, o2 to obiekt który cię ściga (pamitętaj żeby zostawić końcówki .x i .y !!!) liczba 10000 to odległośc w pikselach. sprCHARUP, sprCHARDOWN, sprCHARLEFT, sprCHARRIGHT to odpowiednio nazwy spritów bohatera ;)

 

Problem polega na tym ze nawet jak jestes centralnie pod lub nad obiektem który cię ściga on dalej jest odwrócony na bok, próbowałem mieszać w kodzie ale to dużo nie dało, może ktoś bardziej doświadczony będzie umiał to ustawić ;)

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