Coroutine skipping if statements
,I currently have a condition to traverse through a linked list and prompt the user to select a new linked list to pick as their new game board path. When the space is reached the character walks past and will basically "skip" right pass the if statements and don't allow the user to select which path they want.
public class GameBoard : MonoBehaviour { int location; bool move; Vector3 rotating; public int movement; public int card1; public int card2; public int test; public bool turn = false; private int coins; private bool canDecide = false; private bool isTyping = false; public Pathing presentPath; public Pathing nextPath1; public Pathing nextPath2; public GameController players; public DeckScript other;
private void Start()
{
nextPath1 = presentPath.nextpathone;
nextPath2 = presentPath.nextpathtwo;
coins = 0;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space) && !move && turn)
{
card1 = 10; //move 10 spaces
movement = card1;
StartCoroutine(Moving());
}
}
IEnumerator Moving()
{
if (move)
{
yield break;
}
canDecide = false;
move = true;
location = 0;
Debug.Log("co routine is called rn");
while (movement > 0 && move == true)
{
location++;
location %= presentPath.listofNodes.Count;
if ( location == presentPath.listofNodes.Count-1)
{
move = false;
Debug.Log("time to pick a path, press either your left or right arrow key!");
move = false;
//these statements are getting skipped and not allowing the user to enter
if ((Input.GetKeyDown(KeyCode.W)))
{
Debug.Log("Left arrow was pressed.");
nextPath1 = presentPath.nextpathone;
presentPath = nextPath1;
nextPath2 = presentPath.nextpathtwo;
move = true;
StartCoroutine(Moving());
}
if (Input.GetKeyDown(KeyCode.RightArrow))
{
presentPath = nextPath2;
nextPath1 = presentPath.nextpathone;
nextPath2 = presentPath.nextpathtwo;
}
// set next location in linked list
Vector3 nexloc = presentPath.listofNodes[location].position; Vector3 prevloc = Vector3.zero;
while (NextSpot(nexloc))
{
yield return null;
}
yield return new WaitForSeconds(0.1f);
movement--;
}
move = false;
}
//move to next spot in game bool NextSpot(Vector3 end) { return end != (transform.position = Vector3.MoveTowards(transform.position, end, 8f * Time.deltaTime)); } }
Your answer
Follow this Question
Related Questions
Update() can not be a coroutine 0 Answers
Coroutine endlessly looping? 0 Answers
Calling coroutine in a method issue. 1 Answer
Why isn't my coroutine working when I call it from another script. 0 Answers