Skocz do zawartości

Niszczenie 1 szt. obiektu..


AlanW

Rekomendowane odpowiedzi

Mam kilka problemów z moją grą. Szukałem na forum ale nie znalazłem dokładnie tego co mnie interesuje.. :(

 

1. Mam w grze obiekt1, który występuje w niej wielokrotnie. Gdy go atakuje i skończy się jego hp ma zniknąć 1, a znikają wszystkie... Widziałem już temat z podobnym problemem którym jest jak się okazało - walka. Myślę że u mnie też tak jest - obrażenia dostają wszyscy przeciwnicy, a nie jeden. Więc co zrobić by to ,, health -= 10'' odnosiło się tylko do jednej sztuki tego obiektu?

 

2. Używam opcji draw do wyświetlania doświadczenia (draw_text(10,24,"Doświadczenie:"+string(global.exp)); ). Co zrobić by ten napis zawsze był w rogu ekranu (przemieszczał się wraz z postacią)?

 

3.if distance_to_object (object0) < 200 {move_towards_point(object0.x,object0.y,2)} <- co zrobić by obiekt wykonujący tą akcję omijał obiekty solid gdy idzie za object0 tak jak to robi klocek ,,step Avoiding"?

 

4.Zrobiłem tak, że gdy nacisnę LPM na obiek1 to objekt0 porusza się w jego stronę (step Avoiding) ale gdy nacisnę drugi raz to porusza się szybciej!! Co zrobić by się tak nie działo (3 kliki- nadal ta sama prędkość) ? Do tego też gdy kliknę myszą + wcisnę klawisz ruchu również jest szybciej niż oddzielnie..

 

5. Jak zrobić by: gdy object1 dotyka object2 + nacisnę LPM na object2 to wykonana zostanie akcja (health-=10 dla ob.2)?

 

Proszę o w miarę jasne odpowiedzi, bo z GML korzystam od wczoraj... :rolleyes:

Odnośnik do komentarza
Udostępnij na innych stronach

1. health to zmienna globalna i nie odniesiesz się do jednego obiektu. Zrób sobie swoją np. "hp".

2. draw_text(10+view_xview[0],24+view_yview[0],"Doświadczenie:"+string(global.exp));

3. mp_potential_step

4. pokaż jak to zrobiłeś

5. w object 2 :

kolizja z object1 :

if mouse_check_button(mb_left)

{

object2.hp-=10;

}

jak już wcześniej mówiłem nie używaj HEALTH dla potworków a najlepiej w ogóle.

Odnośnik do komentarza
Udostępnij na innych stronach

Mam kilka problemów z moją grą. Szukałem na forum ale nie znalazłem dokładnie tego co mnie interesuje.. :(

 

1. Mam w grze obiekt1, który występuje w niej wielokrotnie. Gdy go atakuje i skończy się jego hp ma zniknąć 1, a znikają wszystkie... Widziałem już temat z podobnym problemem którym jest jak się okazało - walka. Myślę że u mnie też tak jest - obrażenia dostają wszyscy przeciwnicy, a nie jeden. Więc co zrobić by to ,, health -= 10'' odnosiło się tylko do jednej sztuki tego obiektu?

 

To zapewne mój temat :)

Zrobiłem tak, że dosteje obrażenia przeciwnik, tylko w określonej odległości od zasiegu broni:

GML
if (distance_to_object (obj_hero)) < zasieg_broni //akcja

 

2. Używam opcji draw do wyświetlania doświadczenia (draw_text(10,24,"Doświadczenie:"+string(global.exp)); ). Co zrobić by ten napis zawsze był w rogu ekranu (przemieszczał się wraz z postacią)?

GML
draw_text(10+view_xview[0],24+view_yview[0],"Doświadczenie:"+string(global.exp))

 

3.if distance_to_object (object0) < 200 {move_towards_point(object0.x,object0.y,2)} <- co zrobić by obiekt wykonujący tą akcję omijał obiekty solid gdy idzie za object0 tak jak to robi klocek ,,step Avoiding"?

GML
if (distance_to_object (object0) < 200) mp_potential_step(obiekt.x,obiekt.y,speed,true);

 

5. Jak zrobić by: gdy object1 dotyka object2 + nacisnę LPM na object2 to wykonana zostanie akcja (health-=10 dla ob.2)?

 

W kolizji obiektu 1 z obiekt 2:

GML
if (mouse_check_button_pressed(mb_left)) with (object2) health -= 10

 

Nie wiem w czym może tkwić problem w 4 pytaniu :/

Odnośnik do komentarza
Udostępnij na innych stronach

Dobra wszystko sprawdzone i (prawie) wszystko jest ok (pkt. 4 już mi nie potrzebny ale nie była to opcja relative) - mam mały problem z pkt. 1 bo nie mogę go przetestować gdyż: jak będzie wyglądał kod ,że gdy hp object2 będzie równe 0 to się on zniszczy(usunie)? I jeszcze jak będzie wyglądało zastąpienie w pkt.5 LPM na Ctrl?

Odnośnik do komentarza
Udostępnij na innych stronach

po pierwsze zmień health na np. hp

wszystko zależy od tego, jak masz ustawiony atak. Jeżeli w kolizji jest akcja to odejmowanie życia będzie wyglądać tak:

GML
other.hp-=10

Jeżeli inaczej (np. w step) to musisz sprawdzić, który obiekt znajduje się najbliżej:

GML
najblizszy=instance_nearest(x,y,object2)

najblizszy.hp-=10

sposobów na utratę życia jest tak dużo, jak sposobów na atakowanie, więc jak podasz kod na atak, to będzie najlepiej i najszybciej ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, dzięki już jest tak jak chciałem. Ale jeszcze 2 malutkie pytanka :rolleyes:

 

1. Da się zrobić tak w tym kodzie > if distance_to_object (object0) < 200 {mp_potential_step(object0.x,object0.y,2,object8)} < by ten obiekt w drodze do object0 omijał tylko object8? (ten [object8] na końcu chyba nic nie zmienia poza tym że bez niego gra się nie uruchamia - nadal omija wszystkie...)

2. global.szybkosc+=1 < (to jest wpisane w collision objektu) chce żeby dodawał to tylko raz (w czasie kolizji)

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