Nurkuję w GameplayKit ze Spritekit i z tego co zbieram, ty podklasę GKEntity
, a następnie zacznij dodawać GKComponents
do tego obiektu. Istota będzie mniej więcej po prostu workiem komponentów, które wypełniają jakąś funkcję.GameplayKit - Zamieszanie w wysyłaniu wiadomości między komponentami
Część, o której nie mam pojęcia, to komunikacja między komponentami. Jak zachować ich rozłączenie. Na przykład, powiedzmy, że mam klasę HealthComponent
i dodaję ten komponent do PlayerEntity
i EnemyEntity
. Mam też HealthBarComponent
, ale chcę tylko, aby pasek zdrowia pojawił się nad odtwarzaczem. Kiedy gracz otrzymuje obrażenia, informacje te muszą zostać zaktualizowane w HealthBarComponent
.
W jaki sposób należy przesłać tę informację? Widzę, że w dokumentacji jest klasa o nazwie GKComponentSystem
. Nie jestem w 100% na temat tego, jak należy to wykorzystać.
Kolejne pytanie brzmi: kiedy zdrowie gracza osiągnie zero, powinien się zregenerować, podczas gdy wróg powinien pozostać martwy. Gdy graczowi skończy się życie, gra się kończy.
System opieki zdrowotnej dla wroga i gracza byłby mniej więcej taki sam, ale wydarzenia wokół śmierci byłyby zupełnie inne dla każdego. Nie śledzę, jak korzystać z systemu komponentów, zachowując unikalne zachowanie każdej jednostki.
niektóre pseudo-kod byłoby świetnie
na dole tutaj mówią o komunikacji między komponentami. wydaje się, że nie ma żadnego konkretnego sposobu, aby zrobić to doskonale. Może być konieczne pewne sprzężenie. http://gameprogrammingpatterns.com/component.html – hamobi
Może się okazać, że przykładowy projekt [DemoBots] (https://developer.apple.com/library/prerelease/ios/samplecode/DemoBots/Introduction/Intro.html) jest interesujący. Ekwiwalentem gry jest ładunek, za który odpowiada "ChargeComponent", który powiadamia swojego delegata o utracie ładunku. Gra ma również podobną mechanikę do regeneracji zdrowia, o której wspomniałeś, która została zaimplementowana przy użyciu "GKStateMachine" i stanów towarzyszących. – ABakerSmith