Skocz do zawartości

Pole widzenia wroga


ziomekkamil

Rekomendowane odpowiedzi

GML
//step wroga

if distance_to_object(o_hero)<200

{

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

speed=5

}

else speed=0

Tylko, że w tym przypadku wróg nie będzie omijał przeszkód i sam byś musiał jakąś ładną funkcję napisać. A to trochę roboty jest.

Uzbieraj parę zł i zarejestruj GMa, będzie Ci łatwiej w przyszłości :)

Odnośnik do komentarza
Udostępnij na innych stronach

jest jescze problem bo wcezsniej strzelał o czestotliwosci 100 a teraz 0 tak wyglada mój kod cos jest żle?

 

GML
if distance_to_object(obj_bohater)<200

{

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

speed=2

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

image_single = direction * image_number/360;

 

instance_create(x+16,y+16,obj_pocisk_wroga)

alarm[1]=100

//TUTAJ UMIESZCZASZ WSZYSTKO, GDY CIE GONI

}

else

{

direction=random(360)

speed=2

alarm[0]=200

alarm[1]=random(100)

//A TUTAJ GDY CIE NIE GONI

}

 

 

niekolorowalem skrypt gml mi niedziala

 

 

Myślałem, że wypowiedziałem się dość jasno. Na kija ty to sam kolorujesz?! Wszystko ci działa, nie ma prawa nie działać!

Poprawiłem. Weź edycję posta i zobacz jak to sie robi... Po prostu umieszczasz kod między tagi GML. Nie musisz niczego sam kolorować -_-

Platyna

Odnośnik do komentarza
Udostępnij na innych stronach

Wywal stąd instance_create(x+16,y+16,obj_pocisk_wroga) bo wtedy tworzy Ci pocisk co stepa co nie?

GML
if distance_to_object(obj_bohater)<200

{

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

speed=2

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

image_single = direction * image_number/360;

if alarm[1]=-1 alarm[1]=100

}

else

{

direction=random(360)

speed=2

if alarm[0]=-1 alarm[0]=200

if alarm[1]=-1 alarm[1]=random(100)

}

Odnośnik do komentarza
Udostępnij na innych stronach

w create

direction=random(360)

 

speed=2

 

alarm[0]=200

alarm 0

 

direction=random(360)

 

alarm[0]=200

step

 

if distance_to_object(obj_bohater)<300

 

{

 

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

 

speed=2

 

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

 

image_single = direction * image_number/360;

 

if alarm[1]=-1 alarm[1]=100}

 

else

 

{

 

direction=random(360)

 

speed=2

 

if alarm[0]=-1 alarm[0]=200

 

}

 

 

 

 

trzesi sie to znaczy że idzie i zaraz ie wraca

 

Odnośnik do komentarza
Udostępnij na innych stronach

poprawka do jednej linijki:

if (distance_to_object(obj_bohater)<300 and point_distance(x,y,obj_bohater.x,obj_bohater.y) > 3)

i wszystko powinno grać

@edit eh... ale wtedy ciągle zmienia kierunek przez alarmy. Dopisz jeszcze linijkę if (point_distance(x,y,obj_bohater.x,obj_bohater.y) <= 3) speed = 0

Odnośnik do komentarza
Udostępnij na innych stronach

Sobie zrób. I nie 'podaj jakiś kod' bo pomagamy Ci tylko z własnych chęci a nie dlatego, że musimy...

Przecież masz normalnie chodzenie w różne kierunki:

GML
//create

direction=random(360)

alarm[0]=200

//alarm 0

direction=random(360)

alarm[0]=200

Co Ci w tym nie pasuje?

Odnośnik do komentarza
Udostępnij na innych stronach

To zamiast alarm[0]=200 daj 1000.

Jak nadal będzie tak robił, to znaczy, że gdzieś w innym miejscu któryś kod zmienia mu kierunek.

Poszukaj, przeanalizuj kod, tylko Ty najlepiej wiesz, gdzie i co masz w kodzie.

A tworzenie gier - nawet w GMie - mimo wszystko proste nie jest.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

witam a pomogłby mi ktos zrobic by moj przeciwnik poruszal sie w taki sam sposob jak ja ja poruszam sie wg takiego kodu(oczywiscie kazdy kierunek to odpowiednia strzalka:

 

LEWO -obraca w lewo

direction += 4;

obj.direction +=4;

 

PRAWO-obraca w prawo

direction -= 4;

obj.direction -=4;

 

GÓRA

speed = 2;

obj.x = x;

obj.y = y;

 

DÓŁ

speed = -2;

 

End Step:

image_angle = direction;

obj.x = x;

obj.y = y;

speed = 0;

 

no i jeszcze gdyby był ktoś łaskawy chciałbym by przeciwnik chodził sobie od punktu do punktu gdy ja zbliżę na odpowiednią odległość zareagował czyli oddawał strzały i zaczął isc do mnie + omijał przeszkody

 

z góry dzięki za pomoc

Odnośnik do komentarza
Udostępnij na innych stronach

Tylko musisz mieć zarejestrowaną wersję (mp_potential_step)

GML
//create

speed=2

dir=random(360)

alarm[0]=room_speed*4

direction=dir

strzela=false

 

 

//alarm 0

dir=random(360)

alarm[0]=room_speed*4

 

//alarm 1

strzela=false

 

//step

if distance_to_object(hero)<=200

{

alarm[0]=-1

mp_potential_step(hero.x,hero.y,3,false)

if strzela=false

{

poc=instance_create(x,y,pocisk)

poc.speed=15

poc.direction=point_direction(x,y,hero.x,hero.y)

strzela=true

alarm[1]=room_speed*2

}

}

else

{

speed=2

if alarm[0]=-1 alarm[0]=room_speed*4

}

if direction<dir-5 direction+=5

if direction>dir+5 direction-=5

image_angle=direction

Mniej więcej coś takiego. Może działać albo i nie (nie sprawdzałem) ale już powinieneś wiedzieć, jak to ma mniej więcej wyglądać.

Odnośnik do komentarza
Udostępnij na innych stronach

@lenin

Zarejestrowana wersja nie jest potrzebna do mp_potential_step (przynajmniej w gm 7.0). Jest potrzebna do image_angle.

@markos85

Ja proponuję taki kod:

 

Create:

GML
prz = 1

speed = 2

direction = random(360)

alarm[0]=/ile chcesz/

 

Alarm 0:

GML
if(distance_to_object(bohater) > 300)&&(collision_line(x,y,bohater.x,bohater.y,przeszkoda,true,true))

direction = random(360)

alarm[0]=/ile chcesz/

 

Step:

GML
if(distance_to_object(bohater) < 300)&&(!collision_line(x,y,bohater.x,bohater.y,przeszkoda,true,true))

{

mp_potential_step(bohater.x,bohater.y,2,true)

if(prz = 1)

{

i = instance_create(x,y,pocisk)

i.speed = 16

i.direction = (instance_nearest(x,y,bot)).direction

alarm[1]=/ile chcesz/

prz = 0

}

}

image_angle = direction

 

Alarm 1:

GML
prz = 1

 

A jeśli chodzi o kod, żeby wróg poruszał się w tym samym kierunku, co ty, to wystarczy wpisać w Stepie:

obj.direction = direction

obj.speed = speed

Odnośnik do komentarza
Udostępnij na innych stronach

Muuuuczek567

wstawiłem twoj kod choc mam zarejestrowana wersje i wyskakuje mi

 

"ERROR in

action number 1

of Step Event

for object wrog:

 

Error in code at line 19:

if direction<dir-5 direction+=5

 

at position 15: Unknown variable dir"

 

Wybaczcie moja ciemnote ale jak to wpisac w tym samyk kodzie do stepu?

"...A jeśli chodzi o kod, żeby wróg poruszał się w tym samym kierunku, co ty, to wystarczy wpisać w Stepie:

obj.direction = direction

obj.speed = speed..."

Odnośnik do komentarza
Udostępnij na innych stronach

Muuuuczek567

wstawiłem twoj kod choc mam zarejestrowana wersje i wyskakuje mi

 

"ERROR in

action number 1

of Step Event

for object wrog:

 

Error in code at line 19:

if direction<dir-5 direction+=5

 

at position 15: Unknown variable dir"

To jest akurat część mojego kodu. Połączyłeś oba czy jak?

Odnośnik do komentarza
Udostępnij na innych stronach

Raczej nie powinien się telepać, a już napewno nie znikać.

Masz coś jeszcze ustawione w tym obiekcie? Ew. jakiś inny obiekt odnosi się do tego (hmm, np. ma ustawioną kolizję z pociskiem i ginie)

Kody są mniej więcej w porządku, więc gdzieś indziej masz błąd...

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze to co dałeś nic nikomu nie da...

Ale zauważyłem jedno:

obiekt pocisk -> kolizja z obiektem wrog -> dwa razy instance destroy

Pewnie jedno niszczy wroga?

 

Ale jak wcześniej napisałem taki screen nic nikomu nie pomoże. Możesz na PW wysłać mi projekt to go przejrze i poprawie.

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