SFML - kilka akcji jednocześnie

0

Witam. Planuję napisać w C++ prostą grę z użyciem SFML. Czy ta biblioteka zapewnia jakiś sposób zrealizowania kilku akcji jednocześnie? Np. jedna postać wyprowadza atak, dla drugiej w tym czasie musi być możliwość reakcji (np. poprzez wciśnięcie odpowiedniego klawisza, by wykonać unik), przy okazji pojawia się także komunikat, który klawisz wcisnąć. Czy wątki są dobrym pomysłem w tym przypadku (zacząłem o nich czytać i w zasadzie nie widzę innego rozwiązania)?

0

Wszystko może działać w jednym wątku. Nie musisz tej muchy uwalić z armaty.

Postać pierwsza wyprowadza atak, w tej samej milisekundzie postać druga już wie o wyprowadzanym ataku i może nakazać obiektowi UI, żeby wyświetliły się odpowiednie informacje o klawiszu uniku. To jest zwykła liniowa sekwencja, nie trzeba tego przetwarzać niezależnie, współbieżnie.

Poczytaj sobie o maszynie stanów.

0

Też właśnie myślałem nad takim rozwiązaniem, ale wszystkie czynności dotyczące broniącego się muszą być wykonywane w trakcie animacji ataku. Liczyłem na to, że w ten sposób uproszczę sobie całość (np. animacja ataku wrzucona od razu do funkcji atak). Wszystko ładnie rozdzielone, bez jakichkolwiek kombinacji z wplataniem jednego w drugie. Zwłaszcza, gdybym chciał uniki wykonywać jednak poprzez sekwencję np. trzech klawiszy.

2

Sekwencję 3 klawiszy powinien obsługiwać obiekt odpowiedzialny za sterowanie. W czasie sekwencji po każdym klawiszu by zmieniał oczekiwany klawisz, a po sekwencji powinien on po prostu wywołać odpowiednią metodę ustawiającą postać w stan ataku. Klasa Postać powinna mieć pole Animator, któremu można ustawić wyświetlanie odpowiedniej animacji.

Nie wiem, czy Twoja gra jest real time (jak mortal kombat), czy turowa. Jednak każdy obiekt postaci powinien być odpowiedzialny za postać, którą reprezentuje. Postać atakująca może kazać bezwarunkowo drugiej postaci bronić się. Ale to tamta postać się broni, przechodzi w odpowiedni stan. Animator postaci atakującej dotąd atakuje aż dojdzie do końca animacji lubi postać atakowana się obroni, z tą różnicą, że w przypadku obrony nie następuje utrata życia.

SFML jest niskopoziomowy... Jeśli nie chcesz całego silnika klepać ręcznie, to przerzuć się na Unity. Tam to dopiero wszystko jest "ładnie rozdzielone" :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1