private void HandleMovement()
    {
        float h = CrossPlatformInputManager.GetAxis("Horizontal");
        float v = CrossPlatformInputManager.GetAxis("Vertical");

        if (h != 0 || v != 0 || voiceMovement)
        {
            var forwardVectorToMatch = currentModule.transform.forward;
            var camForward           = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized;
            var correctiveRotation   = Helper.Azimuth(forwardVectorToMatch) - Helper.Azimuth(camForward);
            Debug.Log("RotationTile: " + forwardVectorToMatch + ", Rotation Cam: " + Camera.main.transform.forward + ",Correction: " + correctiveRotation);
            ModuleConnector agentDestinationModuleConnector = null;

            switch (Convert.ToInt32(correctiveRotation))
            {
            case 0:
                Debug.Log("Rotation 0 Case");
                if (h < 0 || voiceDirection == VoiceDirection.LEFT)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "left");
                }
                else if (h > 0 || voiceDirection == VoiceDirection.RIGHT)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "right");
                }
                else if (v < 0 || voiceDirection == VoiceDirection.BACKWARD)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "back");
                }
                else if (v > 0 || voiceDirection == VoiceDirection.FORWARD)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "front");
                }
                break;

            case 90:
                Debug.Log("Rotation 90 Case");
                if (h < 0 || voiceDirection == VoiceDirection.LEFT)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "back");
                }
                else if (h > 0 || voiceDirection == VoiceDirection.RIGHT)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "front");
                }
                else if (v < 0 || voiceDirection == VoiceDirection.BACKWARD)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "right");
                }
                else if (v > 0 || voiceDirection == VoiceDirection.FORWARD)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "left");
                }
                break;

            case -90:
                Debug.Log("Rotation -90 Case");
                if (h < 0 || voiceDirection == VoiceDirection.LEFT)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "front");
                }
                else if (h > 0 || voiceDirection == VoiceDirection.RIGHT)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "back");
                }
                else if (v < 0 || voiceDirection == VoiceDirection.BACKWARD)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "left");
                }
                else if (v > 0 || voiceDirection == VoiceDirection.FORWARD)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "right");
                }
                break;

            case 180:
                Debug.Log("Rotation 180 Case");
                if (h < 0 || voiceDirection == VoiceDirection.LEFT)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "right");
                }
                else if (h > 0 || voiceDirection == VoiceDirection.RIGHT)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "left");
                }
                else if (v < 0 || voiceDirection == VoiceDirection.BACKWARD)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "front");
                }
                else if (v > 0 || voiceDirection == VoiceDirection.FORWARD)
                {
                    agentDestinationModuleConnector = Helper.FindComponentInChildWithTag <ModuleConnector>(currentModule.gameObject, "back");
                }
                break;

            default:
                Debug.Log("no matching rotation for movement: " + Convert.ToInt32(correctiveRotation));
                break;
            }
            if (agentDestinationModuleConnector != null && agentDestinationModuleConnector.getOtherSide() != null || voiceMovement)
            {
                voiceMovement  = false;
                voiceDirection = VoiceDirection.NONE;
                agent.SetTarget(Helper.FindComponentInChildWithTag <Transform>(agentDestinationModuleConnector.getOtherSide().GetComponentInParent <Module>().gameObject, "movePoint").transform);
            }
        }
    }