NukeBoards

Pomoc - [TGF] Wykrywanie detektorem i akcja

Cage - 16-10-2005, 23:10
: Temat postu: [TGF] Wykrywanie detektorem i akcja
Zabardzo nie wiedzialem jak nazwać ten temat zeby było wiadomo o co chodzi, a żeby nie robic nazwy tematu na pół ekranu ;)

Otóż mam obiekty aktywne i każdy z nich ma detektor, mam petle która tworzy n detektorów itd. i wszystko jest cacy. Problem w tym że jesli gracz znajdzie sie w zasiegu detektora to akcje podejmie obiekt do ktorego należy ten sam obiekt (ma ta sama wartość A, która jest identyfikatorem). Ogólnie potrzebuje coś takiego zeby gracz po wejściu w detektor danego przeciwnika, ten przeciwnik otrzymywał odpowiednią wartość B. Teraz działa to tak, że po wejściu w zasięg jednego wroga działają wszyscy a tego nie chce :)
Natie - 16-10-2005, 23:12
:
Do warunku colission dodaj Get all objects with altebrate value A = i tu wartość detektora który sie styknął z graczem.
Cage - 16-10-2005, 23:25
:
Crazy Corkin napisał/a:
Do warunku colission dodaj Get all objects with altebrate value A = i tu wartosc detektora który sie styknął z graczem.


Probowalem i nie dziala; reaguja wszyscy przeciwnicy
Tasmpol - 16-10-2005, 23:32
:
Nie bardzo rozumiem...
Jeżeli chodzi o to, że każdy wróg ma swoje pole zasięgu widzenia to najlepiej je utworzyć w takiej samej kolejności, jak wrogów. Potem dajemy na początku poziomu Set Alterbate value A dla detektorów i wrogów. Jeżeli:

Kod:
Gracz colliding with the Detektor +
Choose object Wrog with reference to they value A:
I tutaj aktywuj wroga.

Wątpię, czy o to chodzi, najlepiej daj tutaj przykład tego i ktoś poprawi. Hmmm... Pokombinuj jeszcze, kiedyś miałem coś podobnego i jakoś określone obiekty władowałem do określonych grup i wszystko było ok.
Daj przykład tego co chcesz uzyskać, jak możesz, a postaram się poprawić. Bo nie bardzo rozumiem, o co chodzi ;)
Cage - 16-10-2005, 23:40
:
Mam przeciwnikow i na starcie tworzone sa detektory, tworzone jest ich tyle ile przeciwnikow. Przyporzadkowane maja wartosci A jak i przeciwnicy (spread value), no i kazdy przeciwnik ma detektor [pole widzenia]. I wszystko działa jak nalezy. Chce teraz zrobic zeby po wejsciu w detektor danego wroga, jego wartosc B ustawiala sie np. na 50 (jest to 'chęć' do gonienia gracza, jesli gracz jest poza widokiem, to wartość B spada ciągle, jeśli dojdzie do 0 to przeciwnik przestaje nas gonić - możemy go 'zgubić'.). No i teraz problem w tym, że gdy wejde w jakikolwiek detektor, wartość B maja wszyscy przeciwnicy, a co za tym idzie, gonią mnie wszyscy :) Próbowałem tego z 'wybieraniem wszystkich obiektow o wartosci A = iles', jak i probowalem tez 'jesli wartosc detektor = wartosc wrog' i tez nie działa.
Tasmpol - 16-10-2005, 23:47
:
Mam nadzieję, że chodzi o to w załączniku:
A więc, jeżeli każdy wróg ma taką samą wartość A jak swój detektor, to jeżeli Gracz wejdzie na detektor to powinno pobrać wartość A tego detektoru, w który on wszedł i względem tej wartości powinien zareagować ten wróg, który ma wartość A jak ten detektor, w który wszedł Gracz...
Jeżeli o to chodzi to sprawdzę, czy to zadziała u mnie. Jeżeli nie - postaram się coś wykombinować.

[ Dodano: 2005-10-17, 00:00 ]
Sorry, że pisze drugiego posta pod rząd...
Przykład, u mnie działa:
Minty - 17-10-2005, 09:37
:
W moim silniku Zaawansowane AI (v1.4 :) ) jest zaimplementowane omijanie - sprawdź zdarzenia związane z tym zachowaniem i zobacz, czy o to właśnie chodzi (każdy przeciwnik osobno reaguje na kolizje detektora ze ścianą).

To powyższe też jest chyba dobre :)
Cage - 04-11-2005, 01:36
:
Eh, jakbym nie kombinował dalej nie działa, zawsze reagują wszyscy. Niewiem co z tym zrobić a rozwiązanie tego problemu jest mi bardzo potrzebne.

http://fire.duke.org.pl/ai.rar
Natie - 04-11-2005, 08:42
:
Po pierwsze robiłeś pętlą spread tyle ile jest przeciwników , a robi się to tylko jeden raz, bo przeciwnicy dostaną po 0 ub 1 wartości A.
Po drugie podnosisz obiekty o wrtości A = detektorowi a nie przeciwnikowi.
Jak przyjdę ze szkoły to pokażę poprawiony przykład.
Cage - 04-11-2005, 18:36
:
Ok pozbyłem się spread w petli, wydawało mi się że przez to problem ale jednak usunięcie jednego problemu powoduje drugi :)

Teraz kazdy przeciwnik i wróg ma przyporządkowaną wartość i wszystko byłoby OK gdyby nie to, że detektory ustawiają się w odpowiednich pozycjach odnośnie tylko jednego przeciwnika. Czyli musi coś być nie tak ze zdarzeniem ustawiającym detektory - próbowałem zrobić tak:


Kod:
Get all object with value A = value A przeciwnik -> set position itd...


I to nie działa. Próbowałem też rozbić zdarzenia na indywidualne dla każdego detektora i zrobiłem warunek "jeśli wartość A detektor = v A przeciwnik" ale to też nie działa...
Natie - 06-11-2005, 10:29
:
Źle było rodzielane spread, to czasami tak źle działa ta funkcja, Broo o tym w jednym arcie przestrzegał. Posprawdzałem licznikiem jakie są wartości A i wsystkie obiekty miały wartość A=0. Zmieniłem akcje spread do porównania czy ten duży trójkątny detektor jest w liczbie kopii równej tym zombiakom. Jeśli tak to z akcją Run this event once rodzieliłem 0 na zombiaki. Nie mam hosta więc wysłałem ci na maila. Mam nadzieje że u ciebie też działa ;)
Jeśli jakieś jeszcze błędy znajdziesz to powiedz, poprawie, napchałem tam pętli więc wiesz :)
Cage - 07-11-2005, 16:50
:
Działać działa, problem w tym, że teraz reaguje tylko 1 zombiak :) Będe bardzo wdzięczny za pomoc, sam nie jestem za dobry technicznie w tgf, pozatym strasznie długo się z tym problemem gimnastykuje i nie moge nic wymyśleć... Bardzo mi zależy na rozwiązaniu tego problemu, bo akurat zaplanowałem sobie zrobienie AI a teraz przez to po prostu się zatrzymałem.
Natie - 07-11-2005, 17:03
:
Wysłałem ci chyba nie to co trzeba :P A jeśli i w tym co trzeba nie działa to będe główkował dalej :)
Omenski - 11-11-2005, 14:07
:
Udało mi się przerobić plik ai.rar co był przesłany by działał poprawnie. Niestety nie mam jak tego wrzucić na jakiegoś FTPa. Jeśli kogoś jeszcze interesuje ten kod proszę o podanie mi na GG: 1266337 maila bądź adresu FTPa by móc umieścić plik.

Ogólnie mogę powiedzieć, że zły był algorytm ruchu. Przerobiłem też część przydzielającą wartości detektorom.

Na marginesie podam, że ten kod co napisałem nie będzie działał gdy ubijemy strażników - nie chciało mi się tego robić, zresztą to praca dla autora gry :D .

/Nie masz hosta?; RomanX/
BROO - 11-11-2005, 14:42
:
A czy to oby nie jest centralnie kurs Czy widać przeciwnika?:
http://drewicz.superhost.pl/fg/kursy/16.html