Я работаю над пошаговой боевой последовательностью в Unity на C #, и в настоящее время у меня есть рабочий ход переключения, входы и AI.Но я не могу понять, как поставить его в очередь с анимацией и прочим, чтобы одно за другим происходило в ExecuteTurnActions () ;
Так что мой вопрос в основном, как мнеструктура ExecuteTurnActions () ?
Мне нужно, чтобы пройти через все сущности и воспроизвести их анимацию в соответствии с происходящим, например:
// PlayAnimation is simply Animator.SetTrigger(string)
Entities[0].PlayAnimation("Attack") or Entities[0].PlayAnimation("ReceiveDamage")
Мне нужно сделатьубедитесь, что когда одна сущность атакует, именно тогда, когда атака происходит, другая сущность получает урон и воспроизводит свою анимацию в этот момент.Я знаю, что есть анимационные события, но я не уверен, как заставить его течь из одного места и убедиться, что каждая сущность знает, какую сущность следует запускать для анимации следующей (например, при атаке).Есть предложения?
Моя структура выглядит примерно так в псевдокоде :
ENTITIES_TO_CREATE = MatchMaker.GetNumberOfPlayersAndEnemies();
void Start() {
InitializeAllThatsNeeded();
Entities[] = new Entity[ENTITIES_TO_CREATE];
// In a for loop, load up stuff and populate Entities
Entities[0].Name = MatchMaker.GetName(0);
Entities[0].Strength = MatchMaker.GetStrength(0); // etc etc etc
}
void Update() {
bool HaveAllEntitiesSelectedTurnAction = new bool[Entities.Length];
// Check every frame if all Entities have selected a turn action
for (int i = 0; i <= Entities.Length - 1; i++) {
HaveAllEntitiesSelectedTurnAction[i] = Entities[i].isTurnActionSelected;
}
// If the Entity that goes first has its action selected, then let the rest select theirs
if(Entities[EntityHasFirstTurn].TurnActionSelected) {
//All logic happens here, if Entity happens to be player then the player
//is allowed input, if enity is NPC then generate hit value etc.
// isTurnActionSelected set in this part
// Now if all have selected their action, execute them in order
if(HaveAllEntitiesSelectedTurnAction.All(x => x) {
ExecuteTurnActions();
}
}
}