# Rotating a cube in multiple directions (forward, back, left, right) not working in a sequence

Hey!
I have a project with artificial inteligence for my university. The problem basically looks like a 3d grid with some walls a goal and a moveable cube. The cube moves around the grid by rotating in the direction of the movement and moving one space at a time. I want to visualize this i already got the positions done correctly but the rotations are not quite working yet. Each rotation works correctly from the starting position. But when i rotate or move multiple times it gets buggy.

this is the part of the funtion that dose the calculating it is called once when i press an arrow to look at a previous or next state of the solution:

``````initialRotation = moveableObject.transform.rotation;
initialPosition = moveableObject.transform.localPosition;

if (prevState != null)
{
{
case MoveDirection.Forward:
break;
case MoveDirection.Back:
break;
case MoveDirection.Left:
break;
case MoveDirection.Right:
break;
default:
break;
}
}

{
case MoveDirection.Forward:
targetRotation = Quaternion.AngleAxis(90f, Vector3.left) * initialRotation;
break;
case MoveDirection.Back:
targetRotation = Quaternion.AngleAxis(90f, Vector3.right) * initialRotation;
break;
case MoveDirection.Left:
targetRotation = Quaternion.AngleAxis(90f, Vector3.back) * initialRotation;
break;
case MoveDirection.Right:
targetRotation = Quaternion.AngleAxis(90f, Vector3.forward) * initialRotation;
break;
default:
break;
}

elapsedTime = 0f;
``````

the update looks like this:

``````private void Update()
{
elapsedTime += Time.deltaTime * animSpeed;

if (elapsedTime < animDuration)
{
float t = elapsedTime / animDuration;
Quaternion newRotation = Quaternion.Slerp(initialRotation, targetRotation, t);
Vector3 newPosition = Vector3.Lerp(initialPosition, targetPosition, t);
moveableObject.transform.rotation = newRotation;
moveableObject.transform.localPosition = newPosition;
}
else
{
moveableObject.transform.rotation = targetRotation;
moveableObject.transform.localPosition = targetPosition;
}
}
``````