Autor Wątek: Pole widzenia jednoskti w grze RTS  (Przeczytany 3255 razy)

Offline cMaster

  • Użytkownik

# Październik 19, 2007, 19:09:43
Na płaszczyźnie są dwie jednostki. Każda z nich rozgląda się wokół i jak zauważy drugą wykonuje krok w jej stronę (lub wykonuje inną akcję, chociażby strzela). Problem jest z rzeczonym "rozglądaniem się" i "zauważaniem się na wzajem". Jak jedna jednostka może uzyskać informację o pozycji drugiej inaczej niż przez podanie jej pozycji tej drugiej? Jaki algorytm zastosować do przeszukiwania pola widzenia by uzyskać taką informację?

Pozdrawiam

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Październik 19, 2007, 19:41:53
for(int i=0;i<liczba_jednostek;i++)
    if(doległość(moja_jednostka,jednostka[i]) < moja_jednostka.zasięg_widzenia)
        zauważ(jednostka[i]);

Jakoś nie widzę w czym tu problem. :)

Offline Xion

  • Redaktor
    • xion.log

# Październik 19, 2007, 19:46:55
To oczywiście najprostszy przypadek, gdy jednostki są przechowywane w postaci listy. Ale można też być bardziej wyrafinowanym (i efektywniejszym) i użyć do tego jednej z metod podziału przestrzeni, np. kafelkowania czy drzew czwórkowych. Wówczas trzeba będzie przejrzeć tylko albo ten sam segment, w którym jest jednostka "rozglądająca się", albo tych kilka z nim sąsiadujących.

Offline 5corpio

  • Użytkownik

# Październik 19, 2007, 21:44:46
Ja kiedyś przy rozglądaniu się kodząc SI robiłem jak w komandosie taki trójkąt, który obraca się w kierunku gdzie patrzy jednostka, wydawało mi się to spoko rozwiązaniem chodźby dlatego, że łatwo można było zmienić kąt widzenia i zasięg etc. A potem łatwo sprawdzić czy pkt. leży w środku trójkąta więc sprawa prosta.a

maxest

  • Gość
# Październik 20, 2007, 02:44:59
Cytuj
A potem łatwo sprawdzić czy pkt. leży w środku trójkąta więc sprawa prosta.a
Podobnie latwo sprawdzic nawet caly wycinek tego "okregu" :)