В моей игре есть логическая переменная, которую я использую, чтобы контролировать, сколько раз NP C может перемещаться за каждый ход. Это тактическая RPG. NP C может двигаться только один раз за ход. Логическое значение называется canMoveNP C и инициализируется как true. Затем, когда NP C достигает своего места назначения, я устанавливаю его на false.
Однако, когда я передаю ход игроку-человеку, я хочу, чтобы эта переменная снова была true, потому что таким образом, NP C может снова двигаться, когда наступает его очередь. Но оно не возвращается к истине, оно остается ложным. Я не знаю, что я делаю неправильно.
Этот код я использую, чтобы переместить NP C и установить переменную в false:
ublic void Move()
{
for (int i = 0; i < mov.NPCS.Length; i++)
{
if (!Physics.Raycast(Sherrif.transform.position, Sherrif.Left_Right, out Sherrif.hitRight) || Sherrif.hitLeft.transform.tag != "Human")
{
if (mov.gameManager.NPCTurn && canMoveNPC )
{
mov.NPCPlayer = mov.NPCS[2];
mov.NPCS[2].GetComponent<NPC>().isNPC = true;
IsMoving = true;
this.transform.position = Vector3.MoveTowards(this.transform.position, targetPosition, velocity * Time.deltaTime);
}
if(this.transform.position == targetPosition)
{
mov.NPCS[2].GetComponent<NPC>().isNPC = false;
IsMoving = false;
canMoveNPC = false;
}
}
}
}
И вот, у меня есть игровой менеджер, который я использую, чтобы контролировать ходы и снова установить для переменной значение true. Я использую код ниже, когда NP C проходит свой ход:
else if (mov.gameManager.playerTurn == 2)
{
mov.gameManager.playerTurn = 1;
mov.gameManager.NPCTurn = false;
mov.gameManager.HumanTurn = true;
mov.TurnEnd();
mov.interfaceManager.ChangeTurn();
for (int i = 0; i < mov.NPCS.Length; i++)
{
mov.NPCS[i].GetComponent<NPC>().canMoveNPC = true;
}
}
Как я могу решить это?