//public void InitializeMoving() //{ //} public bool MovePiece()//bool isStarting, bool forward, Board.Direction direction, MoveSet moveSet) { //if (isStarting) InitializeMoves(direction, moveSet); PieceMove move = moveSet.GetMove(); Vector3 moveVector = move.ForwardVector(); float friction = currentBoardLoc.GetFriction(transform.position.x, transform.position.z); moveVector = friction * Speed * Time.deltaTime * moveVector; float remainingDistance = Vector3.Distance(transform.position, move.GetEndLoc()); if (remainingDistance > moveVector.magnitude) { transform.position += moveVector; } else { //PieceMove nextMove = moveSet.GetNextMove(transform.position, this, currentBoardLoc, pieceDirection); if (moveSet.HasNextMove()) { BoardSpace nextSpace = currentBoardLoc.GetSpaceByDirection(pieceDirection); pieceDirection = move.Direction; PieceMove nextMove = moveSet.GetNextMove(transform.position, this, currentBoardLoc, pieceDirection); //currentBoardLoc = nextSpace; move = nextMove; float deltaTime = Time.deltaTime * moveVector.magnitude / remainingDistance; moveVector = move.ForwardVector(); friction = 1; //currentBoardLoc.GetFriction() moveVector = friction * Speed * deltaTime * moveVector; } else { transform.position = move.GetEndLoc(); PieceStat = PieceStats.idle; return(false); } } return(true); }