Code does not execute move right after being in top left corner
This is my code for checking if the character in my game can move to the desired position without intersecting the wall boundaries. So it checks for every wall (which is stored in limits) in the room, and if it can move to the desired position it will move. The code works fine except if i go up into the top left corner and then try to move right. Nothing happens and I have to move down first before I can move. It only happens if it is a top left corner trying to move to the right. I have been trying to understand where the logic is flawed but with no success.
Move and moveX is true as default and should be reset after each frame.
for (var i = 0; i < limits.length; i++ ) {
if(!intersectCircleLine(xPos, yPos, 0.06, limits[i][0], limits[i][1], limits[i][2], limits[i][3]) && move) {
if (i+1 == limits.length) {
playerPos = Vector3 (xPos, yPos, -1);
gameObject.transform.position = playerPos;
move = true;
moveX = true;
break;
}
} else if (!intersectCircleLine(xPos, yCurrent, 0.06, limits[i][0], limits[i][1], limits[i][2], limits[i][3]) && moveX){
if (i+1 == limits.length) {
playerPos = Vector3 (xPos, yCurrent, -1);
gameObject.transform.position = playerPos;
move = true;
moveX = true;
break;
}
move = false;
} else if (!intersectCircleLine(xCurrent, yPos, 0.06, limits[i][0], limits[i][1], limits[i][2], limits[i][3])){
if (i+1 == limits.length) {
playerPos = Vector3 (xCurrent, yPos, -1);
gameObject.transform.position = playerPos;
move = true;
moveX = true;
break;
}
move = false;
moveX = false;
} else {
move = true;
moveX = true;
break;
}
}
Your answer
Follow this Question
Related Questions
Need your IDEAS!! (Players building their own base) 2 Answers
Making object follow finger? 1 Answer
Duplicating and Instantiating a UI Image next to the previous. 0 Answers
2D sidescrolling game. Jumping problems through platforms and platform effector. 0 Answers
[fixed] My physics.raycast vision doesn't work as I expect it to, and I don't know why 2 Answers