Я уже давно застрял в этой проблеме, поэтому сдаюсь и решил обратиться за помощью. Я делаю пошаговую ролевую игру, и во время хода игрока у каждого юнита есть несколько очков действия, игра проходит через PlayerTurn и добавляет выбранные действия в очередь, а затем выполняет все действия в строке. Однако мой цикл while не позволяет игроку выбрать второе действие, он просто повторяет первое действие (например, «атака») во время цикла.
private IEnumerator PlayerTurn(CharacterBase playerUnit)
{
actionPoints = 2; // Reset action points for player turn
actionQueue.Clear(); // Clear previous actions
selectedTarget = null; // reset selected target
playerUnit.ResetGuard(); // Reset the guard for the current player unit
// phase 1 - Action Selection
while (actionPoints > 0)
{
Debug.Log($"Player {playerUnit.characterStatus.charName} has {actionPoints} action points remaining.");
selectedAction = null; // Reset selected action before waiting for player input
Debug.Log("selectedAction reset to null");
yield return StartCoroutine(WaitForPlayerAction()); // Wait for the player to select an action via input
if (!string.IsNullOrEmpty(selectedAction))
{
actionQueue.Add(selectedAction);
Debug.Log($"Action added: {selectedAction}. Remaining Action Points: {actionPoints}");
}
}
private IEnumerator WaitForPlayerAction()
{
Debug.Log("Waiting for player to select an action...");
while (selectedAction == null)
{
// Replace these with your actual input or UI handling code
if (Input.GetKeyDown(KeyCode.Z) && actionPoints >= 1) // Example: Attack
{
selectedAction = "Attack";
actionPoints--;
Debug.Log("Player chose Attack");
}
else if (Input.GetKeyDown(KeyCode.X) && actionPoints >= 2) // Example: Magic
{
selectedAction = "Magic";
actionPoints -= 2;
Debug.Log("Player chose Magic");
}
else if (Input.GetKeyDown(KeyCode.C) && actionPoints >= 1) // Example: Guard
{
selectedAction = "Guard";
actionPoints--;
Debug.Log("Player chose Guard");
}
yield return null; // wait for the next frame
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... ond-action
Цикл while не позволяет пользователю выбрать второе действие? ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1737652306
Anonymous
Я уже давно застрял в этой проблеме, поэтому сдаюсь и решил обратиться за помощью. Я делаю пошаговую ролевую игру, и во время хода игрока у каждого юнита есть несколько очков действия, игра проходит через PlayerTurn и добавляет выбранные действия в очередь, а затем выполняет все действия в строке. Однако мой цикл while не позволяет игроку выбрать второе действие, он просто повторяет первое действие (например, «атака») во время цикла.
private IEnumerator PlayerTurn(CharacterBase playerUnit)
{
actionPoints = 2; // Reset action points for player turn
actionQueue.Clear(); // Clear previous actions
selectedTarget = null; // reset selected target
playerUnit.ResetGuard(); // Reset the guard for the current player unit
// phase 1 - Action Selection
while (actionPoints > 0)
{
Debug.Log($"Player {playerUnit.characterStatus.charName} has {actionPoints} action points remaining.");
selectedAction = null; // Reset selected action before waiting for player input
Debug.Log("selectedAction reset to null");
yield return StartCoroutine(WaitForPlayerAction()); // Wait for the player to select an action via input
if (!string.IsNullOrEmpty(selectedAction))
{
actionQueue.Add(selectedAction);
Debug.Log($"Action added: {selectedAction}. Remaining Action Points: {actionPoints}");
}
}
private IEnumerator WaitForPlayerAction()
{
Debug.Log("Waiting for player to select an action...");
while (selectedAction == null)
{
// Replace these with your actual input or UI handling code
if (Input.GetKeyDown(KeyCode.Z) && actionPoints >= 1) // Example: Attack
{
selectedAction = "Attack";
actionPoints--;
Debug.Log("Player chose Attack");
}
else if (Input.GetKeyDown(KeyCode.X) && actionPoints >= 2) // Example: Magic
{
selectedAction = "Magic";
actionPoints -= 2;
Debug.Log("Player chose Magic");
}
else if (Input.GetKeyDown(KeyCode.C) && actionPoints >= 1) // Example: Guard
{
selectedAction = "Guard";
actionPoints--;
Debug.Log("Player chose Guard");
}
yield return null; // wait for the next frame
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79381984/while-loop-not-letting-user-pick-second-action[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия